翻转字符串里的单词
class Solution:
def reverseWords(self, s: str) -> str:
# 解法一:生撕代码
s = list(s)
while s[0] == ' ' or s[-1] == ' ':
# s.remove(' ')
del s[0]
del s[-1]
# slow = 0
# fast = 0
# for i in range(len(s)):
# if s[slow]
# for循环中,列表s变化时,不能及时更新
# for i in range(len(s)):
# if s[i] == ' ':
# if s[i + 1] == ' ':
# del s[i]
# i -= 1
# i未定义
i = 0
# IndexError: list index out of range
# 删除多余的空格,设计精妙
while i < len(s) - 1:
if s[i] == ' ':
if s[i + 1] == ' ':
del s[i]
i -= 1
i += 1
# 进行总体的列表翻转
left = 0
right = len(s) - 1
while left < right:
temp = s[left]
s[left] = s[right]
s[right] = temp
left += 1
right -= 1
left_record = 0
# range(s) 不正确
for j in range(len(s)):
if s[j] == ' ':
j_ = j
while left_record < j - 1:
temp = s[left_record]
s[left_record] = s[j - 1]
s[j - 1] = temp
left_record += 1
j -= 1
left_record = j_ + 1
elif j == len(s) - 1:
j_ = j
while left_record < j:
temp = s[left_record]
s[left_record] = s[j]
s[j] = temp
left_record += 1
j -= 1
left_record = j_ + 1
s = ''.join(s)
return s
主要总结如下:对于for循环结构和while循环结构:
# for循环中,列表s变化时,不能及时更新
# for i in range(len(s)):
# if s[i] == ' ':
# if s[i + 1] == ' ':
# del s[i]
# i -= 1
while循环中就可以自动及时更新:
while i < len(s) - 1:
if s[i] == ' ':
if s[i + 1] == ' ':
del s[i]
i -= 1
i += 1
del s[i]可以依据数组标签删除指定的元素