左旋转字符串
题目描述
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串“abcdefg”和数字2,该函数返回左旋转两位得到的结果“cdefgab”。
思路分析
先翻转前k个字符,再翻转剩下字符,最后全部再翻转一次即得到结果。代码如下:
public String LeftRotateString(String str,int n) {
if (str==null||n>str.length()||n<0)return "";
if (n==str.length()||n==0)return str;
if (n==str.length()||n==0)return str;
char[] chars = str.toCharArray();
rotate(chars,0,n-1);
rotate(chars,n,chars.length-1);
rotate(chars,0,chars.length-1);
return new String(chars);
}
private void rotate(char[] chars, int i, int j) {
while (i<j){
char temp=chars[i];
chars[i]=chars[j];
chars[j]=temp;
i++;
j--;
}
}