剑指offer编程题——左旋转字符串

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

解题思路:对于一个字符串str,循环左移n位。那么首先判断,这个字符串真正左移的位数。当n的值大于字符串的长度后,循环左移,只是做重复工作。所以求出真正需要移动的长度count=n % str.length()。那么移动后的字符串为,从头开始的count个数对换到字符串尾部即可。
举例:abcdefg,9。那么真正移动的有两位。结果为cdefgab。
代码实现:

/**
 * LeftRotateString:
 *
 * @author 玄月九九重又一(玄月青阳)
 * @version 2019-11-14 13:37:48
 */
public class LeftRotateString {
    public static String LeftRotateString(String str, int n){
        if(str == null || str.length() <= 0)
            return str;
        int len = str.length();
        int count = n % len;
        if(n == 0 || len <= 1){
            return str;
        }
        return str.substring(count) + str.substring(0, count);
    }

    public static void main(String[] args) {
        String str = "";
        LeftRotateString(str, 2);
    }
}

你可能感兴趣的:(剑指offer编程题)