Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Cách đảo ngược chuỗi (string) trong Python?

Python không có hàm built-in đảo ngược chuỗi. Cần tự triển khai logic. Bài viết trình bày nhiều phương pháp.

Dùng vòng lặp FOR

Ý tưởng: dùng vòng lặp ngược từ chỉ số cuối về 0. Mỗi lần lặp, nối ký tự tại chỉ số hiện tại vào chuỗi mới.

Quy trình:

  • a := chuỗi rỗng
  • Lặp từ chỉ số cuối về 0, giảm 1: a = a + ký tự tại chỉ số hiện tại
  • Trả về a

Ví dụ

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))

Kết quả

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

Cách thông minh hơn: dùng vòng lặp for each, nối từng ký tự vào đầu chuỗi mới.

Ví dụ

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

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

Kết quả

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

Dùng vòng lặp WHILE

Thay vòng for bằng while. Lặp từ chỉ số cuối về 0, nối ký tự vào cuối chuỗi mới.

Ví dụ

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

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

Kết quả

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

Dùng Extended Slice syntax (Cắt mở rộng)

Cú pháp slice mở rộng có 3 tham số: [start, end, step]. Không truyền start/end mặc định là 0 và độ dài chuỗi. step=-1 nghĩa là bắt đầu từ cuối về đầu, thu được chuỗi đảo ngược.

Ví dụ

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

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

Kết quả

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

Dùng join() và reversed()

reversed() trả về iterator đảo ngược. Cần dùng join() để nối các ký tự thành chuỗi.

Ví dụ

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

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

Kết quả

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

Dùng đệ quy (Recursion)

Gọi đệ quy hàm reverse với chuỗi cắt từ chỉ số 1 đến cuối. Cơ sở (base case): độ dài chuỗi = 0 thì trả về chuỗi. Mỗi lần đệ quy cắt chuỗi từ index 1 và nối ký tự đầu vào cuối.

Ví dụ

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

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

Kết quả

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

Trên đây là 5 phương pháp đảo ngược chuỗi trong Python.

Phương pháp nhanh và tốt nhất?

Nhanh nhất và tốt nhất là dùng Slicing (Phương pháp 3). Cho kết quả nhanh nhất, code chỉ 1 dòng, không cần tự viết logic.