Leetcode 344 Reverse String
- 题目链接:leetcode.com/problems/re…
- 文章讲解:代码随想录 programmercarl.com
- 视频讲解:字符串基础操作! | LeetCode:344.反转字符串
- 状态:有做出来
1. 第一想法:
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
l, r = 0, len(s) - 1
while l < r:
temp = s[l]
s[l] = s[r]
s[r] = temp
l += 1
r -= 1
2. 看完后想法
原来 Python 可以直接 s[l], s[r] = s[r], s[l]。
3. 总结
其实我没想到直接用库函数....
Leetcode 541 Reverse String II
- 题目链接:leetcode.com/problems/re…
- 文章讲解:代码随想录 programmercarl.com
- 视频讲解:字符串操作进阶! | LeetCode:541. 反转字符串II
- 状态:没做出来
1. 第一想法
这个题目要求好复杂。
2. 看完后想法
class Solution:
def reverseStr(self, s: str, k: int) -> str:
def reverse_substring(text):
left, right = 0, len(text) - 1
while left < right:
text[left], text[right] = text[right], text[left]
left += 1
right -= 1
return text
res = list(s)
for cur in range(0, len(s), 2*k):
res[cur: cur + k] = reverse_substring(res[cur: cur + k])
return ''.join(res)
3. 总结
每次移动2 * k判断是否有需要反转的区间。
剑指Offer 05 替换空格
- 题目链接:leetcode.cn/problems/ti…
- 文章讲解:代码随想录 programmercarl.com
- 状态:有做出来
1. 第一想法
class Solution:
def replaceSpace(self , s: str) -> str:
res = ""
for c in s:
if c ==" ":
res += "%20"
else:
res += c
return res
2. 看完后想法
class Solution:
def replaceSpace(self, s: str) -> str:
counter = s.count(' ')
res = list(s)
res.extend([' '] * counter * 2)
left, right = len(s) - 1, len(res) - 1
while left >= 0:
if res[left] != ' ':
res[right] = res[left]
right -= 1
else:
res[right - 2: right + 1] = '%20'
right -= 3
left -= 1
return ''.join(res)
3. 总结
先扩容数组再向前填充。
Leetcode 151 Rerverse Words in a String
- 题目链接:leetcode.com/problems/re…
- 文章讲解:代码随想录 programmercarl.com
- 视频讲解:字符串复杂操作拿捏了! | LeetCode:151.翻转字符串里的单词
- 状态:有做出来
1. 第一想法
class Solution:
def reverseWords(self, s: str) -> str:
l = s.split(' ')
r = l[::-1]
res = [elem for elem in r if elem.strip()]
return ' '.join(res)
2. 看完后想法
class Solution:
def reverseWords(self, s: str) -> str:
words = s.split()
left, right = 0, len(words) - 1
while left < right:
words[left], words[right] = words[right], words[left]
left += 1
right -= 1
return " ". join(words)
3. 总结
常看常新。
剑指Offer58-II 左旋转字符串
- 题目链接:leetcode.cn/problems/zu…
- 文章讲解:代码随想录 programmercarl.com
- 状态:没做出来
1. 第一想法
牛客上的58似乎不和这题完全一样,海外版没有这题。
2. 看完后想法
class Solution:
def reverseLeftWords(self, s: str, n: int) -> str:
return s[n:] + s[:n]
3. 总结
常看常新。