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.