ได้สตริง s และจำนวนเต็ม k กลับตัวอักษร k ตัวแรกในแต่ละบล็อก 2k ตัว หากเหลือไม่ถึง k ตัว → กลับทั้งหมด หากเหลือ ≥ k แต่น้อยกว่า 2k → กลับแค่ k ตัวแรก
ตัวอย่าง
s = "abcdefg", k = 3 → บล็อกแรก 6 ตัว: abc→cba, def คงเดิม → cbadefg
ขั้นตอนการแก้ปัญหา
- แปลงสตริงเป็นลิสต์ตัวอักษร
- วนดัชนี
i = k-1, 3k-1, 5k-1, ... - แต่ละรอบ: กลับช่วง
[i-k+1 : i+1] - รวมลิสต์กลับเป็นสตริง
การติดตั้งใน Python
class Solution:
def reverseStr(self, s, k):
lst = list(s)
for i in range(0, len(lst), 2*k):
lst[i:i+k] = reversed(lst[i:i+k])
return ''.join(lst)
ob = Solution()
print(ob.reverseStr("abcdefg", 3)) # cbadefg
print(ob.reverseStr("abcdefgh", 3)) # cbadefhg
อินพุต / เอาต์พุต
Input: "abcdefg", 3 Output: cbadefg