您的位置:首页 > Web前端

剑指offer系列之43:左旋转字符串

2016-04-12 21:10 357 查看
题目描述:字符串的左旋转操作是吧字符串前面的若干个字符转移到字符串的尾部。要求输入字符串和要左旋转的位数,输出旋转后的字符串。(知识迁移能力,字符串的处理能力)

思路:比如输入字符串“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--;
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: