左旋字符串

题目描述

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

实现过程

  • 这个过程相当于一个循环队列,那么我们只需要求得最小的移动后的结果即可,即是需要将传入参数n对字符串长度取余,然后再对字符串进行操作
  • java中String字符串提供了一个substring的操作可以切分字符串,那么这道题直接调用这个方法,然后就对应的两段值切分返回相加即可得到结果
  • 如果是其他字符串理论上应该是循环k的长度前面的字符串不挺的往后加,然后前面的字符串删除也可以得到结果

JAVA源代码

public class Solution {
    public String LeftRotateString(String str,int n) {
        if (str==null || str.length()==0 || n<=0) return str;
        int length = str.length();
        n = n%length;
        if (n==length) return str;
        str = str.substring(n, length) + str.substring(0, n);
        return str;
    }
}

你可能感兴趣的:(左旋字符串)