541. 反转字符串 II

小豆丁 1年前 ⋅ 1146 阅读
541. 反转字符串 II
给定一个字符串 s 和一个整数 k,你需要对从字符串开头算起的每隔 2k 个字符的前 k 个字符进行反转。

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

示例:

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

解析

直接在k范围内双指针翻转就好了

class Solution {
    public String reverseStr(String s, int k) {
        //直接在k范围内双指针反转就好了
        char[] vals = s.toCharArray();
        int len = s.length();
        for(int i = 0 ;i < len;){
            int start = i;
            int end = Math.min(i+k-1,len-1);
            while(start<end){
                char temp = vals[start];
                vals[start++] = vals[end];
                vals[end--] = temp;
            }
            i+=2*k;
        }
        return new String(vals);
    }
}