สมมติว่าเรามีสตริงและจำนวนเต็ม 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