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)
posted on 2024-04-14 12:24  小鹿BAMBI  阅读(3)  评论(0编辑  收藏  举报