541. 反转字符串 II
先把字符串转为列表,排除特殊情况len(s) < k
,再反转
for循环
每次间隔2k,用s[i:k + i] = list(reversed(s[i:k + i]))
反转前k个
s = list(s)
if len(s) < k:
s.reverse()
return "".join(s)
for i in range(0, len(s), 2 * k):
s[i:k + i] = list(reversed(s[i:k + i]))
return "".join(s)
剑指 Offer 05. 替换空格
遍历字符串,遇到空格就替换为%20
s = list(s)
for i in range(len(s)):
if s[i] == " ":
s[i] = "%20"
return "".join(s)
用双指针法。。。有点太复杂了吧?
151. 反转字符串中的单词
容易想到的做法:
s = list(s)
t1 = []
t2 = []
res = []
for i in range(len(s)):
if s[i] != " ":
t1.append(s[i])
else:
t2.append("".join(t1))
t1 = []
t2.append("".join(t1))
for i in range(len(t2)):
if t2[i] != " " and t2[i] != '':
res.append(t2[i])
res.append(" ")
res.pop(-1)
res.reverse()
return "".join(res)
其实一开始有想到双指针,但感觉太麻烦于是没有考虑,有空再看