左旋转字符串
题目描述:
汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,
请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。
是不是很简单?OK,搞定它!
解题思路:
public class Solution {
public String LeftRotateString(String str,int n) {
char[] chars = str.toCharArray();
if(chars.length < n) {
return "";
}
reverse(chars, 0, n-1);//0-n-1旋转
reverse(chars, n, chars.length-1);//n-length旋转
reverse(chars, 0, chars.length-1);//整体旋转
return new String(chars);
}
public void reverse(char[] chars,int low,int high){//旋转函数
char temp;
while(low<high){
temp = chars[low];
chars[low] = chars[high];
chars[high] = temp;
low++;
high--;
}
}
}