美文网首页
左旋转字符串-java

左旋转字符串-java

作者: Jacinth | 来源:发表于2017-07-19 00:20 被阅读0次

左旋转字符串

题目描述

汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!

public class Solution {
    /*解题思路:
    reverse
    (ArBr)r =((B)r)r((A)r)r=BA 
    假设原序列有n位,循环左移i位的过程如下: 
    (1)reverse(0,i-1); 
    (2)reverse(i,n-1); 
    (3)reverse(1,n-1); 
    例如原序列:abcdefg,循环左移3位: 
    (1)cba   defg 
    (2)cba   gfed
    (3)defgabc
    要记住一点就是STL中的迭代器是左闭右开区间,所以reverse操作的第二个参数需要往后移动一位*/
    //首先将要移动的部分看做第一部分,剩余部分为第二部分
    //各自对第一部分,第二部分做翻转操作
    //最后再对整体做翻转操作
    public String LeftRotateString(String str,int n) {
        if(str == null || str.length() ==0 || n <= 0){
            return str;//返回原字符串
        }
        //将第一、第二部分的下标赋初值
        int startIndex1 = 0;
        int endindex1 = startIndex1 + n - 1;
        int startIndex2 = endindex1 + 1;
        int endIndex2 = str.length() - 1;
         
        //翻转第一部分
        String firstReverse = Reverse(str,startIndex1,endindex1);
        //翻转第二部分
        String secondReverse =Reverse(firstReverse,startIndex2,endIndex2);
        //翻转整体
        return Reverse(secondReverse,startIndex1,endIndex2);
    }
     
    private String Reverse(String oriStr,int start,int end){
        char [] array = oriStr.toCharArray();
         
        while(start < end){
            char temp = array[start];
            array[start] = array[end];
            array[end] = temp;
             
            ++start;
            -- end;
        }
        return new String(array);
    }
}

相关文章

  • LeetCode题解之左旋转字符串

    左旋转字符串 题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左...

  • 面试题58 - II. 左旋转字符串

    左旋转字符串 题目描述 字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左...

  • 左旋转字符串(java)

    题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。...

  • 左旋转字符串-java

    左旋转字符串 题目描述 汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指...

  • AVLtTree

    左旋转 右旋转 双旋转 左旋右旋规律 右旋右低,左旋左低,左高右旋,右高左旋左旋动左。右旋动右。新节点代替当前根节...

  • 旋转字符串 (lintcode:rotate-string)

    旋转字符串 给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转) 例如: 对于字符串 "abcdefg...

  • 旋转字符串

    旋转字符串

  • lintCode题解(8)

    标签(空格分隔): lintCode 旋转字符串 给定一个字符串和一个偏移量,根据偏移量旋转字符串(从左向右旋转)...

  • 判断字符串str1是否是字符串str2的旋转词

    判断字符串str1是否是字符串str2的旋转词 对字符串的旋转操作描述如下:例如: str = "123456" ...

  • 牛客/力扣算法题

    1.逆转字符串 2.旋转字符串

网友评论

      本文标题:左旋转字符串-java

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