Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.

class Solution {
    public String reverseStr(String s, int k) {
        if(k == 0)
            return s;
        int i = 0;
        char[] cs = s.toCharArray();

        while(i < cs.length) {
            reverse(cs, i, Math.min(i + k - 1, cs.length - 1));
            i += 2 * k;
        }

        return String.valueOf(cs);
    }

    public void reverse(char[] cs, int start, int end) {
        while(start < end) {
            char c = cs[start];
            cs[start] = cs[end];
            cs[end] = c;
            start++;
            end--;
        }
    }
}

results matching ""

    No results matching ""