题目描述:
分析:
方法一,先求出左移一位的函数,然后就可以得出左移n位的函数。
java代码实现:
//左移n 位
private static String turnLeftWithNum(String str, int n) {
for(int i=0;i<n;i++) {
String temp = turnLetfonce(str);
str = temp;
}
return str;
}
//左移一位
private static String turnLetfonce(String str) {
char[] temp = new char[str.length()];
for(int i=0;i<str.length();i++) {
temp[i] = str.charAt(i);
}
char c = temp[0];
int i=0;
for(;i<str.length()-1;i++) {
temp[i] = temp[i+1] ;
}
temp[i] = c;
return new String(temp);
}
方法二(offer上面的方法)
java代码实现:
//左移n位
private static String RoLString(String str,int n) {
if(str == null || n < 1)
return null;
String temp = Reverse(str,0,n-1);
temp = Reverse(temp,n,temp.length()-1);
temp = Reverse(temp,0,temp.length()-1);
return temp;
}
//翻转一个单词。
private static String Reverse(String str,int start,int end) {
char[] temp = new char[str.length()];
for(int i=0;i<str.length();i++) {
temp[i] = str.charAt(i);
}
while(start < end) {
char c = temp[start];
temp[start] = temp[end];
temp[end] = c;
start ++;
end--;
}
return new String(temp);
}