题目描述
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!
解析思路
注意:
单引号里的数据是char类型的,双引号引里的数据才是String类型的
运行代码
public class Solution {
public String LeftRotateString(String str,int n) {
char [] chars = str.toCharArray();
int length = chars.length;
if(chars == null || length == 0){
return "";
}
if(length < n){
n = n % length;
}
swap(chars, 0, n-1);
swap(chars, n, length - 1);
swap(chars, 0, length - 1);
return new String(chars);//记住char类型可以直接new String 返回
}
private void swap(char[] chars, int start,int end){
while(end > start){
char temp = chars[start];
chars[start] = chars[end];
chars[end] = temp;
start++;
end--;
}
}
}