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

Đảo Chuỗi II (Reverse String II) trong Python


Giả sử ta có một chuỗi và một số nguyên k, ta phải đảo ngược k ký tự đầu tiên cho mỗi 2k ký tự tính từ đầu chuỗi. Nếu không đủ ký tự còn lại, thì đảo ngược tất cả chúng. Nếu còn ít hơn 2k ký tự nhưng lớn hơn hoặc bằng k ký tự, thì đảo ngược k ký tự đầu và giữ nguyên phần còn lại.

Ví dụ, nếu đầu vào là "abcdefgh" và k = 3, thì đầu ra sẽ là "cbadefhg"

Để giải quyết, ta thực hiện các bước sau:

  • l := tạo danh sách ký tự của s
  • i := k-1
  • Khi i < kích thước l + k:
    • a := l[từ chỉ số 0 đến i-k+1]
    • b := l[từ chỉ số i-k+1 đến i+1]
    • c := l[từ chỉ số i+1 đến cuối]
    • l := a nối b[đảo ngược] nối c
    • i := i + 2*k
  • Trả về chuỗi bằng cách nối các ký tự trong l

Ví dụ

Hãy xem triển khai sau để hiểu rõ hơn:

class Solution:    def reverseStr(self, s, k):       l = list(s)       i = k-1       while i < len(l)+k:           a = l[:i-k+1]           b = l[i-k+1:i+1]           c = l[i+1:]           l = a + b[::-1] + c           i += 2*k       return ''.join(l) ob = Solution() print(ob.reverseStr("abcdefg", 3))

Đầu vào

"abcdefg", 3

Đầu ra

cbadefg