反转字符串
程序员文章站
2022-06-23 07:50:45
...
LeetCode每日一题(2021.8.20)【EASY】
给定一个字符串 s 和一个整数 k,从字符串开头算起,每 2k 个字符反转前 k 个字符。
如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。
示例 1:
输入:s = “abcdefg”, k = 2
输出:“bacdfeg”
示例 2:
输入:s = “abcd”, k = 2
输出:“bacd”
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-string-ii
class Solution(object):
def reverseStr(self, s, k):
i,j,n= 0,k-1,0
s = list(s)
while n+2*k <= len(s):
while i < j:
s[i],s[j] = s[j],s[i]
i += 1
j -= 1
i = n+2*k
j = i+k-1
n += 2*k
if k <= (len(s)-n) < 2*k:
j = i+k-1
while i < j:
s[i], s[j] = s[j], s[i]
i += 1
j -= 1
elif len(s)-n < k:
j = len(s)-1
while i < j:
s[i], s[j] = s[j], s[i]
i += 1
j -= 1
res = ''.join(s)
return res
s = "abcdefg"
k = 2
rev = reversestr()
rev.reversestr(s,k)