题目:字符串的左旋转操作是把字符串前面的若干个字符转义到字符串的尾部;请定义一个函数实现字符串左旋转操作的功能;比如,输入字符串"abcdefg"和数字2,该函数将返回坐旋转两位得到的结果"cdefgab";
思路:类似于翻转单词顺序题目;将字符串从第N为开始分为两部分;
- 翻转前n-1位;
- 翻转n-最后一位;
- 翻转整个字符串;
代码:
public class Solution {
public String LeftRotateString(String str,int n) {
if(n>=str.length())
return str;
char [] chars=str.toCharArray();
int length=chars.length;
Reverse(chars,0,n-1);
Reverse(chars,n,length-1);
Reverse(chars,0,length-1);
return new String(chars);
}
public static void Reverse(char[] str,int start,int end){
while(start<end){
char tmp=str[end];
str[end]=str[start];
str[start]=tmp;
start++;
end--;
}
}
}