LEETCODE | PYTHON | 541 | 反转字符串 Ⅱ
1. 题目
给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-string-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2. 代码
class Solution:
def reverseStr(self, s: str, k: int) -> str:
#初始化
l = len(s)
#遍历每一段
for i in range(0,l,2*k):
#print(i)
#判断剩余字符数目
if l - i >= k:
#从每一段2*k的字符串开头进行k个字符的反转
left = i
right = i + k - 1
else:
#反转全部字符
left = i
right = l - 1
#print(left,right)
#循环反转
while left < right:
#交换left和right值
s = s[0:left] + s[right] + s[left+1:right] + s[left] + s[right+1:l]
#调整left和right指针位置
left = left + 1
right = right - 1
#print(s)
return s