欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

反转字符串

程序员文章站 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)