leetcode 344.反转字符串
题目
344.反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
解题思路
双指针法
(1)定义左指针和右指针,左指针指向是数组第1位,右指针指向数组最后一位
(2)交换左右指针的值,左指针向右移动,右指针向左移动,知道左右指针相遇
(3)循环条件 left < right还是left <= right
数组长度为偶数时,left < right
数组长度为奇数时,左右指针同时向中间移动,最后留中间一个元素,也不涉及交换,所以判断条件也是left < right
实现代码
from typing import List
class Solution:
def reverseString(self, s: List[str]) -> None:
left = 0
right = len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
s = ["h","e","l","l","o"]
test = Solution()
test.reverseString(s)
print(s)