美文网首页
算法---字符串旋转

算法---字符串旋转

作者: reedthinking | 来源:发表于2017-06-19 20:08 被阅读0次

    给定一个字符串,要求把字符串前面的若干个字符移动到字符串的尾部

    public class StringReverse {
        private void reverseString(char[] str, int start, int end) {
            while (start < end) {
                char c = str[start];
                str[start++] = str[end];
                str[end--] = c;
            }
        }
    
        /*
        假设字符串由XY两部分组成,定义X翻转后为X^T,Y翻转为Y^T,那么可得(X^TY^T)^T=YX字符串成功旋转
        */
        public void rotateString(char[] str, int n, int m) {
            m = m % n;
            //翻转前m个
            reverseString(str, 0, m - 1);
            //翻转后m-n个
            reverseString(str, m, n - 1);
            //整体翻转
            reverseString(str, 0, n - 1);
        }
    
        public static void main(String[] args) {
            char[] str = "abcde".toCharArray();
            StringReverse sReverse = new StringReverse();
            sReverse.rotateString(str, 5, 2);
            System.out.println(str);
        }
    }
    

    相关文章

      网友评论

          本文标题:算法---字符串旋转

          本文链接:https://www.haomeiwen.com/subject/gcdnqxtx.html