【LeetCode】344. 反转字符串

116 阅读1分钟

image.png

Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情

测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。

怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~

一、题目描述:

  • 题目内容

    image.png

  • 题目示例

    image.png

  • 题目解析

    • 本题给出一个字符串,将其字符反转输出
    • 要求不能使用额外空间,则不能引入其他如列表等来临时存储
    • 要求原地进行修改,空间复杂度为O(1)

二、思路分析:

我们拿到本题,看到不能使用额外空间,必须在原地进行修改,在前面的刷题的过程中,我们马上能想到方法就是双指针。大致解决思路就有了,如下:

  • 定义两个指针start,end分别指向字符串数组的一头一尾。
  • 借助一个tmp临时变量,对s[start]与s[end]值进行交换
  • 当 s[start] 与 s[end] 相等时不进行交换

image.png

根据以上思路,我们可以轻松实现,完整代码如下:

class Solution(object):
    def reverseString(self, s):
        """
        :type s: List[str]
        :rtype: None Do not return anything, modify s in-place instead.
        """

        tmp = ""
        start = 0
        end = len(s)-1

        while start <= end:

            if s[start] != s[end]:

                tmp = s[start]
                s[start] = s[end]
                s[end] = tmp
            
            start = start+1
            end = end -1
        
        return s

三、总结:

本题提交记录如下,本题主要考察双指针,平时多多练习。

image.png

时间复杂度O(n),空间复杂度O(1)

以上是本期内容,欢迎大佬们点赞评论,下期见~~~