翻转字符串里的单词
刷题日期:2024-04-24
[[151.翻转字符串里的单词]]
思路
双指针
split()函数
算法思路
算法细节
1.
Code
class Solution:
def reverseWords(self, s: str) -> str:
words = s.split()
left = 0
right = len(words) - 1
while left < right:
words[left], words[right] = words[right], words[left]
left += 1
right -= 1
return ' '.join(words)
反转字符串
刷题日期:2024-04-24
[[344.反转字符串]]
思路
双指针
算法思路
算法细节
1.
Code
class Solution:
def reverseString(self, s: List[str]) -> None:
"""
Do not return anything, modify s in-place instead.
"""
left = 0
right = len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
反转字符串II
刷题日期:2024-04-24
[[541. 反转字符串II]]
思路
双指针
算法思路
算法细节
1.
Code
class Solution:
def reverse(self, i, j):
while i < j:
self.s[i], self.s[j] = self.s[j], self.s[i]
i += 1
j -= 1
def reverseStr(self, s: str, k: int) -> str:
self.s = list(s)
for i in range(0, len(s), 2 * k):
if len(s) - i >= k:
self.reverse(i, i + k - 1)
else:
self.reverse(i, len(s) - 1)
return ''.join(self.s)
替换数字
刷题日期:2024-04-24
[[替换数字]]
思路
算法思路
Python里面的string也是不可改的,所以也是需要额外空间的。空间复杂度:O(n)。
算法细节
1.
Code
class Solution:
def replace(self, s):
s = list(s)
replace_str = "number"
for i in range(len(s)):
if ord(s[i]) <= 57 and ord(s[i]) >= 48:
s[i] = replace_str
return ''.join(s)
s = input()
print(Solution().replace(s))
右旋字符串
刷题日期:2024-04-24
[[右旋字符串]]
思路
直接把后k的字符串和前-k个连接
算法思路
算法细节
1.
Code
class Solution:
def right_hand_str(self, s:str, k:int):
return s[-k:] + s[:-k]