สมมติว่าเรามีอาร์เรย์ของตัวอักษร เราต้องกลับสตริงโดยไม่ใช้พื้นที่เพิ่มเติม เช่นถ้าสตริงเป็น ['H', 'E', 'L', 'L', 'O'] ผลลัพธ์จะเป็น ['O', 'L', 'L', 'E', 'H']
วิธีการแก้ปัญหา
- ใช้ตัวชี้สองตัว start = 0 และ end = ความยาวของสตริง - 1
- สลับตัวอักษรตัวแรกและตัวสุดท้าย
- เพิ่ม start ขึ้น 1 และลด end ลง 1
ตัวอย่างโค้ด
class Solution(object):
def reverseString(self, s):
"""
:type s: List[str]
:rtype: None Do not return anything, modify s in-place instead.
"""
start = 0
end = len(s) - 1
while start < end:
s[start], s[end] = s[end], s[start]
start += 1
end -= 1
string_1 = ["H","E","L","L","O"]
ob1 = Solution()
ob1.reverseString(string_1)
print(string_1)
อินพุต
String = ["H","E","L","L","O"]
เอาต์พุต
["O","L","L","E","H"]