541. 反转字符串II

思路:
这个题只要让for循环i 每次移动 2 * k 就可以找到2k长度的区间,找到之后然后进行规则判定进行反转。
遇到固定长度区间的题目,可以考虑for循环中做相应的长度变化。

class Solution {
    public char[] reverseString(char[] s,int left,int right) {
        while (left < right){
            char temp = s[left];
            s[left] = s[right];
            s[right] = temp;
            left++;
            right--;
        }
        return s;
    }
    public String reverseStr(String s, int k) {
        char[] chars = s.toCharArray();
        for (int i = 0; i < chars.length; i+= 2 * k) {
            int left = i;
            int right = chars.length - 1 > left + k -1 ? left+k-1:chars.length-1;
            chars = reverseString(chars,left,right);
        }
        return new String(chars);
    }
}

你可能感兴趣的:(leetcode,java)