344.反转字符串
使用双指针
代码如下:
class Solution:
def reverseString(self, s: List[str]) -> None:
left = 0
right = len(s) - 1
while left < right:
s[left], s[right] = s[right], s[left]
left += 1
right -= 1
使用栈
代码如下:
class Solution:
def reverseString(self, s: List[str]) -> None:
stack = []
for char in s:
stack.append(char)
for i in range(len(s)):
s[i] = stack.pop()
使用range
代码如下:
class Solution:
def reverseString(self, s: List[str]) -> None:
n = len(s)-1
for i in range(len(s)//2):
s[i],s[n-i] = s[n-i],s[i]
学习时长
20分钟
541. 反转字符串II
使用切片整体替换
代码如下:
class Solution:
def reverseStr(self, s: str, k: int) -> str:
def reverse_substring(text):
left = 0
right = len(s) - 1
while left < right:
s[left], s[right] = s[right], s[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)
使用连续切片替换
代码如下:
class Solution:
def reverseStr(self, s: str, k: int) -> str:
p = 0
while p < len(s):
p2 = p + k
s = s[:p] + s[p:p2][::-1] + s[p2:]
p = p + 2*k
return s
学习时长
40分钟
替换数字
题目链接:替换数字
代码如下:
strl = input()
count = 0
for num in strl:
if ord("0") <= ord(num) <= ord("9"):
count += 1
print(result)
学习时长
10分钟
151. 反转字符串中的单词
题目链接:151. 反转字符串中的单词
思路:先移除多余空格,再将整个字符串反转,最后将每个单词反转
代码如下:
class Solution:
def reverseWords(self, s: str) -> str:
# 删除首尾的空格
s = s.strip() #strip()主要是这个字符串的首尾字符,如果括号里面为空的话,默认删除当前字符串的首尾的空格和换行符。
s = s[::-1] # 翻转整个字符串
# 将字符串按照空格进行拆分成单词,再将单词翻转后用空格进行拼接
s = " ".join(word [::-1]for word in s.split()) # split函数是对字符串进行分割,分割后变成了一个字符串列表,括号内是空的,也就默认的按照空格进行分割。
return s
学习时长
10分钟
右旋字符串
题目链接:右旋字符串
代码如下:
k =int(input())
s = input()
p = len(s)-k
s = s[p:]+s[:p]
print(s)
学习时长
10分钟
今日总结
学习了切片的用法和几个操作string的函数