给定一个字符串 s
和一个整数 k
,从字符串开头算起,每计数至 2k
个字符,就反转这 2k
字符中的前 k
个字符。
- 如果剩余字符少于
k
个,则将剩余字符全部反转。 - 如果剩余字符小于
2k
但大于或等于k
个,则反转前k
个字符,其余字符保持原样。
示例 1:
输入:s = "abcdefg", k = 2 输出:"bacdfeg"
题解:
class Solution:
def reverseStr(self, s: str, k: int) -> str:
i=0
t = []
while i < len(s):
ik = i+k
s = s[:i] + s[i:ik][::-1] + s[ik:]
i += 2*k
return s
class Solution:
def reverseStr(self, s: str, k: int) -> str:
def reverse_substring(text):
i=0
while i < len(text)//2:
left = i
right = len(text)-1-i
text[left], text[right] = text[right], text[left]
i+=1
return text
x = list(s)
for i in range(0,len(s),2*k):
x[i:i+k] = reverse_substring(x[i:i+k])
return ''.join(x)