344. 反转字符串
题目链接:https://leetcode.cn/problems/reverse-string/
思路:双指针
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left, right = 0, len(s)-1
while left <= right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
return s
541. 反转字符串II
题目链接:https://leetcode.cn/problems/reverse-string-ii/
思路:上一题一样的思路 只是用了切片分段
class Solution:
def reverseStr(self, s: str, k: int) -> str:
def reverse(s):
left, right = 0, len(s)-1
while left <= right:
s[left],s[right] = s[right], s[left]
left += 1
right -= 1
return s
res = list(s)
for i in range(0, len(s), 2*k):
res[i:i+k] = reverse(res[i:i+k])
return ''.join(res)
剑指Offer05.替换空格
题目链接:https://leetcode.cn/problems/ti-huan-kong-ge-lcof/
思路:除了python中特殊的写法 就是暴力了(还没有深究python这种写法的原理,懂哥可以留言教下小弟)
class Solution:
def replaceSpace(self, s: str) -> str:
#return '%20'.join(s.split(' '))
ns = list(s)
for i in range(len(ns)):
if ns[i] == ' ':
ns[i] = '%20'
return ''.join(ns)
151. 反转字符串中的单词
题目链接:https://leetcode.cn/problems/reverse-words-in-a-string/
思路:先全部从后往前反转,最后反转每个单词
class Solution:
def reverseWords(self, s: str) -> str:
s_list = [i for i in s.split(' ') if len(i) > 0]
return ' '.join(s_list[::-1])
剑指Offer58. 左旋转字符串
题目链接:https://leetcode.cn/problems/zuo-xuan-zhuan-zi-fu-chuan-lcof/
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
s = list(s)
s[0:n] = list(reversed(s[0:n]))
s[n:] = list(reversed(s[n:]))
s.reverse()
return ''.join(s)