题目描述
汇编语言中有一种移位指令叫做循环左移(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;
}
}