leetcode 541. 反转字符串 II

一、题目

给定一个字符串 s 和一个整数 k,从字符串开头算起,每计数至 2k 个字符,就反转这 2k 字符中的前 k 个字符。

如果剩余字符少于 k 个,则将剩余字符全部反转。
如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例 1:
输入:s = "abcdefg", k = 2
输出:"bacdfeg"

二、解法

func reverseStr(s string, k int) string {
    len:=len(s)
    ss:=[]byte(s)
    for i:=0;i<len;i+=2*k{
        if i+k-1<len{
            reverse(ss[i:i+k])
        }else{
            reverse(ss[i:len])
        }
    }
    return string(ss)
}

func reverse(ss []byte){
    for i,j:=0,len(ss)-1;i<j;{
        ss[i],ss[j]=ss[j],ss[i]
        i++
        j--
    }
}
上一篇:LeetCode 59 旋转矩阵II -- 模拟


下一篇:力扣剑指Offer II 034. 外星语言是否排序