Rotate String
Given a string and an offset, rotate string by offset. (rotate from left to right)
Example
Given"abcdefg".
offset=0 => "abcdefg"
offset=1 => "gabcdef"
offset=2 => "fgabcde"
offset=3 => "efgabcd"分析
参见前题的手翻转例子,先局部再整体翻转,注意char[]处理后直接用。同时offset记得判断。
答案
    public void rotateString(char[] str, int offset) {
        if(str == null || str.length == 0)
            return;
        if(offset > str.length){
            offset = offset % str.length;
        }
        helper(str, 0, str.length - 1 - offset);
        helper(str, str.length - offset, str.length - 1);
        helper(str, 0 , str.length - 1);
    }
    private char[] helper(char[] cs, int ss, int e){
        while(ss < e){
            char temp = cs[ss];
            cs[ss] = cs[e];
            cs[e] = temp;
            ss ++;
            e --;
        }
        return cs;
    }Last updated
Was this helpful?