Computer >> Máy Tính >  >> Lập trình >> Python

Reverse String II trong Python


Giả sử chúng ta có một chuỗi và một số nguyên k, chúng ta phải đảo ngược k ký tự đầu tiên cho mỗi 2k ký tự đếm từ đầu chuỗi. Nếu không còn đủ ký tự nào, hãy đảo ngược tất cả chúng. Nếu có í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 tiên và giữ nguyên ký tự còn lại.

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

Để giải quyết vấn đề này, chúng ta sẽ làm theo các bước sau -

  • l:=tạo danh sách các ký tự của s

  • i:=k-1

  • trong khi tôi

    • a:=l [từ chỉ mục 0 đến i-k + 1]

    • b:=l [từ chỉ mục i-k + 1 đến i + 1]

    • c:=l [từ chỉ mục i + 1 đến cuối]

    • l:=a nối b [từ chỉ mục 0 đến cuối] nối c

    • i:=i + 2 * k

  • trả về chuỗi bằng cách nối từng ký tự trong l

Ví dụ

Hãy cùng chúng tôi xem cách 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