Những cách viết chương trình đảo ngược chuỗi bằng Python

Đảo ngược chuỗi trong Python là tác vụ được dùng phổ biến. Nếu muốn biết hàm đảo ngược chuỗi Python. Mời bạn đọc bài viết dưới đây.

Python là một trong số ngôn ngữ lập trình thông dụng nhất hiện nay. Nó đã giúp lập trình viên sáng tạo nên rất nhiều chương trình hữu ích và phổ biến. Học Python không khó. Hãy bắt đầu từ những kiến thức đơn giản nhất. Ở bài viết này, hãy cùng nhau tìm hiểu về cách đảo ngược một chuỗi trong Python.

Để đảo ngược một chuỗi trong Python, bạn có thể sử dụng phép cắt số âm như sau:

str[::-1]

Ví dụ, đảo ngược một chuỗi “Testing”:

s = "Testing"

# Dùng phép cắt số âm để đảo ngược một chuỗi
rev = s[::-1]

print(rev)

Kết quả:

gnitseT

Để tìm hiểu thêm các cách tiếp cận đảo ngược chuỗi trong Python, hãy đọc tiếp. Qua bài viết, bạn cũng sẽ hiểu rõ hơn cách ví dụ trên thực sự hoạt động.

Hãy nhớ rằng ví dụ trên cho thấy cách tốt nhất để đảo ngược chuỗi. Các phương pháp còn lại hữu ích cho mục đích giáo dục và để nâng cao kỹ năng Python của bạn. Nhưng nếu bạn đang tìm kiếm giải pháp dễ nhất, bạn đã ổn với ví dụ trên rồi.

Hãy cùng bắt đầu nào!

Đề bài: Cho muỗi chuỗi ký tự, hãy viết chương trình để in ra chuỗi kỹ tự đó theo thứ tự được đảo ngược.

Ví dụ:

Input:  Quantrimang
Output: gnamirtnauQ

1. Đảo ngược một chuỗi trong Python bằng vòng lặp

Trong ví dụ này, chúng ta gọi một hàm để đảo ngược một chuỗi, hàm này lặp lại mọi phần tử và nối từng ký tự ở đầu một cách thông minh để thu được chuỗi đã đảo ngược.

Code mẫu:

def reverse(s):
    str = ""
    for i in s:
        str = i + str
    return str
  
s = "Quantrimang"
  
print("Chuỗi ban đầu là : ", end="")
print(s)
  
print("Chuỗi đã được đảo ngược (sử dụng vòng lặp) là : ", end="")
print(reverse(s))

2. Đảo ngược một chuỗi trong Python bằng đệ quy

Chuỗi được truyền dưới dạng đối số cho một hàm đệ quy để đảo ngược chuỗi. Trong hàm, điều kiện cơ bản là nếu độ dài của chuỗi bằng 0 thì chuỗi được trả về. Nếu không bằng 0, hàm đảo ngược được gọi đệ quy để cắt một phần của chuỗi ngoại trừ ký tự đầu tiên và nối ký tự đầu tiên với phần còn lại chủa chuỗi.

Code mẫu:

def reverse(s):
    if len(s) == 0:
        return s
    else:
        return reverse(s[1:]) + s[0]
  
  
s = "Quantrimang"
  
print("Chuỗi ban đầu là : ", end="")
print(s)
  
print("Chuỗi đã được đảo ngược (sử dụng đệ quy) là: ", end="")
print(reverse(s))

3. Đảo ngược một chuỗi trong Python bằng ngăn xếp

Một ngăn xếp trống được tạo ra. Từng ký tự một của chuỗi được đẩy vào ngăn xếp. Lần lượt tất cả các ký tự trong ngăn xếp được đưa ra và đưa trở lại chuỗi.

Code mẫu:

# Function to create an empty stack. It
# initializes size of stack as 0
def createStack():
    stack = []
    return stack
  
# Function to determine the size of the stack
def size(stack):
    return len(stack)
  
# Stack is empty if the size is 0
def isEmpty(stack):
    if size(stack) == 0:
        return true
  
# Function to add an item to stack . It
# increases size by 1
def push(stack, item):
    stack.append(item)
  
# Function to remove an item from stack.
# It decreases size by 1
def pop(stack):
    if isEmpty(stack):
        return
    return stack.pop()
  
# A stack based function to reverse a string
def reverse(string):
    n = len(string)
  
    # Create a empty stack
    stack = createStack()
  
    # Push all characters of string to stack
    for i in range(0, n, 1):
        push(stack, string[i])
  
    # Making the string empty since all
    # characters are saved in stack
    string = ""
  
    # Pop all characters of string and put
    # them back to string
    for i in range(0, n, 1):
        string += pop(stack)
  
    return string
  
  
# Driver code
s = "Quantrimang"
print("Chuỗi ban đầu là : ", end="")
print(s)
print("Chuỗi sau khi đảo ngược (sử dụng ngăn xếp) là: ", end="")
print(reverse(s))

4. Đảo ngược một chuỗi trong Python bằng slice extended

Slice extended đề nghị đặt trường "step" là [start, stop, step] và không đặt trường nào là start và stop cho biết giá trị mặc định tương ứng là 0 và độ dài chuỗi, và "-1" biểu thị bắt đầu từ cuối và stop ở start, do đó đảo ngược một chuỗi.

Code mẫu:

# Function to reverse a string
def reverse(string):
    string = string[::-1]
    return string
  
s = "Quantrimang"
  
print("Chuỗi ban đầu là : ", end="")
print(s)
  
print("Chuỗi sau khi được đảo ngược (sử dụng slice extended) là: ", end="")
print(reverse(s))

5. Đảo ngược một chuỗi trong Python bằng phương thức reversed()

Phương thức reversed() trả về trình lặp đảo ngược của chuỗi đã cho và sau đó các phần tử của chuỗi được nối với chuỗi rỗng đã được phân tách bằng cách sử dụng join(). Và chuỗi thứ tự đảo ngược được hình thành.

Code mẫu:

# Python code to reverse a string
# using reversed()
  
# Function to reverse a string
def reverse(string):
    string = "".join(reversed(string))
    return string
  
s = "Quantrimang"
  
print("Chuỗi ban đầu là: ", end="")
print(s)
  
print("Chuỗi sau khi đảo ngược (sử dụng reversed) là: ", end="")
print(reverse(s))

Phương pháp slice nhanh hơn chủ yếu do hàm join() tạo một danh sách mới. Tuy nhiên, dùng hàm join() lại dễ đọc hơn. Nó là phương pháp đáng thử nhất nếu chương trình không có chú thích.

6. Đảo ngược một chuỗi trong Python bằng list comprehension()

List comprehension tạo danh sách các phần tử của một chuỗi theo thứ tự ngược lại và sau đó các phần tử của nó được nối bằng cách sử dụng join(). Và chuỗi theo thứ tự đảo ngược được hình thành.

Code mẫu:

# Function to reverse a string
def reverse(string):
    string = [string[i] for i in range(len(string)-1, -1, -1)]
    return "".join(string)
  
s = "Quantrimang"
  
print("Chuỗi ban đầu là: ", s)
  
print("Chuỗi sau khi đảo ngược (sử dụng list comprehension) là : ", reverse(s))

7. Đảo ngược một chuỗi trong Python bằng lệnh gọi hàm

Hàm sẽ đảo ngược một chuỗi bằng cách chuyển đổi nó thành danh sách sau đó đảo ngược nó và chuyển đổi lại thành chuỗi.

Code mẫu:

# Function to reverse a string
# by converting string to list
# then reversed it and again convert it to string
def reverse(string):
    string = list(string)
    string.reverse()
    return "".join(string)
  
s = "Quantrimang"
  
print("Chuỗi ban đầu là: ", s)
  
print("Chuỗi đã được đảo ngược (sử dụng lệnh gọi hàm) là: ", reverse(s))
  
# This code is contributed by Susobhan AKhuli

So sánh hiệu suất của các xâu đảo ngược Python

Dưới đây là cách so sánh hiệu quả giữa các phương thức đảo ngược xâu trong Python.

  1. Để lặp lại các bài kiểm tra hiệu suất trên hệ thống:
  2. Tạo file Python tên reverse_strings.py.
  3. Sao chép & dán tất cả phương thức đảo ngược chuỗi vào file.
  4. Mở cửa sổ dòng lệnh hoặc terminal.
  5. Chạy các lệnh terminal bên dưới để thấy thời gian thực thi.
$ python3 -m timeit --number 100000 --unit usec 'import reverse_strings' 'reverse_strings.reverse_slicing("This is just a tests")'
100000 loops, best of 5: 0.377 usec per loop
$ python3 -m timeit --number 100000 --unit usec 'import reverse_strings' 'reverse_strings.reverse_for_loop("This is just a tests")'
100000 loops, best of 5: 1.84 usec per loop
$ python3 -m timeit --number 100000 --unit usec 'import reverse_strings' 'reverse_strings.reverse_while_loop("This is just a tests")'
100000 loops, best of 5: 2.94 usec per loop
$ python3 -m timeit --number 100000 --unit usec 'import reverse_strings' 'reverse_strings.reverse_with_join("This is just a tests")'
100000 loops, best of 5: 1.01 usec per loop
$ python3 -m timeit --number 100000 --unit usec 'import reverse_strings' 'reverse_strings.reverse_with_list("This is just a tests")'
100000 loops, best of 5: 0.87 usec per loop
$ python3 -m timeit --number 100000 --unit usec 'import reverse_strings' 'reverse_strings.reverse_recursively("This is just a tests")'
100000 loops, best of 5: 6.29 usec per loop

Như bạn thấy, phương pháp tiếp cận bằng slice là nhanh nhất.

Mong rằng bài viết này sẽ có ích với các bạn!

Thứ Hai, 17/02/2025 15:46
3,513 👨 31.945
Xác thực tài khoản!

Theo Nghị định 147/2024/ND-CP, bạn cần xác thực tài khoản trước khi sử dụng tính năng này. Chúng tôi sẽ gửi mã xác thực qua SMS hoặc Zalo tới số điện thoại mà bạn nhập dưới đây:

Số điện thoại chưa đúng định dạng!
Số điện thoại này đã được xác thực!
Bạn có thể dùng Sđt này đăng nhập tại đây!
Lỗi gửi SMS, liên hệ Admin
0 Bình luận
Sắp xếp theo
❖
    ❖ Học Python
    Chia sẻ
    Chia sẻ FacebookChia sẻ Twitter
    Đóng