LeetCode 344.反转字符串
题目链接:反转字符串
这题使用双指针可以解决,或者使用python自带的reverse函数解决。
双指针
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left, right = 0, len(s) - 1
# 该方法已经不需要判断奇偶数,经测试后时间空间复杂度比用 for i in range(right//2)更低
# 推荐该写法,更加通俗易懂
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
一行代码解决
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
s[:] = s[::-1]#这个意思是取s得逆序
return s
541. 反转字符串II
反转字符串II
这题是上一题的拓展,需要思考,调用上面的函数。具体讲解见:反转字符串II
def reverseStr( s: str, k: int):
def reverse_str(a):
left,right =0,len(a)-1
while left < right :
a[left],a[right]=a[right],a[left]
left+=1
right-=1
return a
res=list(s)
for i in range(0,len(s),2*k):
res[i:i+k]=reverse_str(res[i:i+k])
return ''.join(res)
要注意for i in range(0,len(s),2*k) 这里假如k=1 i 则为0,4,....
其他题目
因为其他题目可以直接用内置函数解决,则不详细写答案了。题目如下:
剑指 Offer 05. 替换空格
class Solution:
def replaceSpace(self, s: str) -> str:
res=s.replace(' ','%20')
return res
class Solution:
def reverseWords(self, s: str) -> str:
s = s.strip()
s = s.split()
s.reverse()
s = ' '.join(s)
return s
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
res = s[n:]+s[:n]
return res
以上题目参考文章
文章连接:Python关于去除字符串中空格的方法