题目描述:字符串的左旋转操作是吧字符串前面的若干个字符转移到字符串的尾部。要求输入字符串和要左旋转的位数,输出旋转后的字符串。(知识迁移能力,字符串的处理能力)
思路:比如输入字符串“abcdefg”和2,要求把字符串前面两位移到后面变为“cdefgab”,这时可以把前面两个字符ab看成一部分,cdefg看成一部分,分别旋转这两部分,得到“bagfedc”,然后再旋转整个字符串即可。
public class Solution {
public String LeftRotateString(String str,int n) {
String result = "";
if(n < 0 || str == null || str.length() == 0 || n > str.length()){
return result;
}
char[] array = str.toCharArray();
int length = array.length;
int firstStart = 0;
int firstEnd = firstStart + n - 1;
int secondStart = firstStart + n;
int secondEnd = length - 1;
reverse(array,firstStart,firstEnd);
reverse(array,secondStart,secondEnd);
reverse(array,firstStart,secondEnd);
result = String.valueOf(array);
return result;
}
public void reverse(char[] array,int begin,int end){
if(array == null || array.length == 0){
return;
}
while(begin < end){
char temp = array[begin];
array[begin] = array[end];
array[end] = temp;
begin++;
end--;
}
}
}