Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Reverse String II ใน Python


สมมติว่าเรามีสตริงและจำนวนเต็ม k เราต้องย้อนกลับอักขระ k ตัวแรกสำหรับทุก ๆ 2k อักขระนับจากจุดเริ่มต้นของสตริง หากไม่มีอักขระเหลืออยู่เพียงพอ ให้ย้อนกลับทั้งหมด หากมีอักขระน้อยกว่า 2k ตัว แต่มากกว่าหรือเท่ากับ k อักขระ ให้กลับอักขระ k ตัวแรกและปล่อยให้อีกตัวเป็นต้นฉบับ

ดังนั้น หากอินพุตเป็นเหมือน "abcdefgh" และ k =3 เอาต์พุตจะเป็น "cbadefhg"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • l :=ทำรายการตัวละครของ s

  • ผม :=k-1

  • ในขณะที่ฉัน <ขนาดของ l + k −

    • a :=l[จากดัชนี 0 ถึง i-k+1]

    • b :=l[จากดัชนี i-k+1 ถึง i+1]

    • c :=l[จากดัชนี i+1 ถึงจุดสิ้นสุด]

    • l :=a concatenate b[ from index 0 to end] เชื่อม c

    • ผม :=ผม + 2*k

  • ส่งคืนสตริงโดยเชื่อมอักขระแต่ละตัวใน l

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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

อินพุต

"abcdefg", 3

ผลลัพธ์

cbadefg