随笔 - 62  文章 - 0  评论 - 2  阅读 - 31万 

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   小鹿BAMBI  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示