Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。
怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~
一、题目描述:
-
题目内容
-
题目示例
-
题目解析
- 本题给出一个字符串,将其字符反转输出
- 要求不能使用额外空间,则不能引入其他如列表等来临时存储
- 要求原地进行修改,空间复杂度为O(1)
二、思路分析:
我们拿到本题,看到不能使用额外空间,必须在原地进行修改,在前面的刷题的过程中,我们马上能想到方法就是双指针。大致解决思路就有了,如下:
- 定义两个指针start,end分别指向字符串数组的一头一尾。
- 借助一个tmp临时变量,对s[start]与s[end]值进行交换
- 当 s[start] 与 s[end] 相等时不进行交换
根据以上思路,我们可以轻松实现,完整代码如下:
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
三、总结:
本题提交记录如下,本题主要考察双指针,平时多多练习。
时间复杂度O(n),空间复杂度O(1)
以上是本期内容,欢迎大佬们点赞评论,下期见~~~