注意和题目344. 反转字符串的输入和输出也是有区别的
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
例子:
输入:s = "abcdefg", k = 2 输出:"bacdfeg"
核心代码:
for cur in range(0, len(s), 2 * k):
res[cur: cur + k] = reverse_sub_str(res[cur: cur + k])
class Solution(object):
def reverseStr(self, s, k):
"""
:type s: str
:type k: int
:rtype: str
"""
def reverse_sub_str(s):
l, r = 0, len(s) - 1
while(l < r):
s[l], s[r] = s[r], s[l]
l += 1
r -= 1
return s
res = list(s)
# res[cur: cur + k] = reverse_sub_str(res[cur: cur + k])
# 一行代码满足反转的三个要求
# 1每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符
# 2剩余字符少于 k 个,则将剩余字符全部反转
# 3剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样
for cur in range(0, len(s), 2 * k):
res[cur: cur + k] = reverse_sub_str(res[cur: cur + k])
# Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
return "".join(res)