Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

วิธีกลับลำดับ String ใน Python

Python ไม่มีฟังก์ชันสำเร็จรูปสำหรับกลับลำดับ String ดังนั้นเราต้องเขียนตรรกะเอง

เราจะกลับลำดับ String ด้วยวิธีต่างๆ

การใช้ FOR Loop

แนวคิดคือใช้ลูปย้อนกลับ (reverse loop) เริ่มจากดัชนีสุดท้ายของ String ไปถึงดัชนี 0 ในแต่ละรอบ เราจะนำตัวอักษรไปต่อท้าย String ใหม่เพื่อให้ได้ String ที่กลับลำดับแล้ว

ขั้นตอนทั่วไป:

  • a := String ใหม่ (ว่าง)

  • ลูปจากดัชนีสุดท้ายของ String ถึง 0 ลดทีละ 1: a = a + ตัวอักษรที่ดัชนีปัจจุบัน

  • คืนค่า a

ตัวอย่าง

def reverse(s):
    a = ""
    last_index = len(s) - 1
    for i in range(last_index, -1, -1):
        a = a + s[i]
    return a

string = "TutorialsPoint"
print(reverse(string))

ผลลัพธ์

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

การเขียนที่ฉลาดกว่าของวิธีข้างต้น:

ที่นี่เราใช้ for-each loop และนำตัวอักษรแต่ละตัวไปต่อที่หน้าของ String ใหม่ การต่อท้ายหน้าของ String ใหม่จะให้ String ที่กลับลำดับแล้ว แทน for-each loop เราสามารถใช้ลูปปกติจากดัชนี 0 ถึงความยาวของ String ได้

ตัวอย่าง

def reverse(s):
    a = ""
    for i in s:
        a = i + a
    return a

string = "TutorialsPoint"
print(reverse(string))

ผลลัพธ์

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

การใช้ While Loop

เราสามารถแทน for loop ด้วย while loop เราจะวนลูป while จากดัชนีสุดท้ายถึง 0 และต่อตัวอักษรที่ดัชนีปัจจุบันไปท้าย String ใหม่เพื่อให้ได้ String ที่กลับลำดับแล้ว

ตัวอย่าง

def reverse(s):
    a = ""
    i = len(s) - 1
    while i >= 0:
        a = a + s[i]
        i -= 1
    return a

string = "TutorialsPoint"
print(reverse(string))

ผลลัพธ์

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

การใช้ Extended Slice Syntax

Extended slice syntax มี 3 พารามิเตอร์ [start, end, step] การไม่ระบุ start และ end หมายถึงเริ่มต้นที่ 0 และสิ้นสุดที่ความยาวของ String การระบุ step เป็น '-1' หมายถึงเริ่มจากท้ายและหยุดที่หน้า ดังนั้นจึงได้ String ที่กลับลำดับแล้ว

ตัวอย่าง

def reverse(s):
    a = s[::-1]
    return a

string = "TutorialsPoint"
print(reverse(string))
# Using join and reversed()

ผลลัพธ์

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

เราสามารถกลับลำดับได้ด้วย reversed() แต่ reversed() คืนค่าเป็น reversed iterator ดังนั้นเราต้อง join ตัวอักษรของ iterator นั้นเพื่อให้ได้ String

การใช้ join และ reversed()

ตัวอย่าง

def reverse(s):
    a = "".join(reversed(s))
    return a

string = "TutorialsPoint"
print(reverse(string))

ผลลัพธ์

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

การใช้ Recursion (ฟังก์ชันเรียกตัวเอง)

เราสามารถกลับลำดับ String ด้วย Recursion เราจะเรียกฟังก์ชัน reverse ซ้ำโดยส่ง String ตั้งแต่ดัชนี 1 ถึงท้าย ดังนั้นความยาวของ String จะลดลงเรื่อยๆ จนถึง 0 ซึ่งเป็น Base case ที่คืนค่า String ในแต่ละการเรียกซ้ำ เราจะ slice String จากดัชนี 1 ถึงท้าย และต่อตัวอักษรแรกไปท้ายของ String ที่ slice แล้ว

ตัวอย่าง

def reverse(s):
    if len(s) == 0:
        return s
    else:
        return reverse(s[1:]) + s[0]

string = "TutorialsPoint"
print(reverse(string))

ผลลัพธ์

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

นี่คือวิธีการบางส่วนในการกลับลำดับ String ใน Python เราได้พูดถึง 5 วิธีที่แตกต่างกัน

วิธีไหนเร็วและดีที่สุด?

วิธีที่เร็วและดีที่สุดคือการใช้ Slicing (วิธีที่ 3) ให้ผลลัพธ์เร็วที่สุดในทุกวิธี การใช้งานง่ายมาก เพียง 1 บรรทัดของโค้ด และไม่ต้องเขียนตรรกะเอง