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

Reverse String II ใน Python: กลับตัวอักษร k ตัวแรกทุก 2k ตัว

ได้สตริง s และจำนวนเต็ม k กลับตัวอักษร k ตัวแรกในแต่ละบล็อก 2k ตัว หากเหลือไม่ถึง k ตัว → กลับทั้งหมด หากเหลือ ≥ k แต่น้อยกว่า 2k → กลับแค่ k ตัวแรก

ตัวอย่าง

s = "abcdefg", k = 3 → บล็อกแรก 6 ตัว: abc→cba, def คงเดิม → cbadefg

ขั้นตอนการแก้ปัญหา

  1. แปลงสตริงเป็นลิสต์ตัวอักษร
  2. วนดัชนี i = k-1, 3k-1, 5k-1, ...
  3. แต่ละรอบ: กลับช่วง [i-k+1 : i+1]
  4. รวมลิสต์กลับเป็นสตริง

การติดตั้งใน 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