lintcode 8.旋转字符串

给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)

eg:对于字符串"abcdefg"

offset=0 =>"abcdefg"

offset=1 =>"gabcdef"

offset=2 =>"fgabcde"

offset=3 =>"efgabcd"

思路:仔细分析可以发现,就是把从0~n-offset-1这一段反转,将n-offset~n-1这一段反转,再整体反转。

class solution{
public void rotateString(char[] str, int offset) {
        if(str==null||str.length==0)
        return;
        int n=str.length;
        offset%=n;
        reverse (str,0,n-offset-1);
        reverse (str,n-offset,n-1);
        reverse (str,0,n-1);
        
    }
    public void reverse(char[] ch ,int start,int end){
        while(start<end){
            char temp=ch[start];
            ch[start]=ch[end];
            ch[end]=temp;
            start++;
            end--;
        }
    }
}


猜你喜欢

转载自blog.csdn.net/thyzy120605/article/details/80708949
今日推荐