题目描述:给定一个字符串,要求将字符串前面的若干个字符移到字符串的尾部。例如:将字符串“abcdef”的前三个字符‘a','b','c'移到字符串的尾部,那么原字符串将变成“defabc”。
首先想到的是将需要移动的字符一个一个移到字符串的尾部。
实现如下:
public void LeftShiftOne(String[] s, int n) {
// save the first one code
String t = s[0];
for (int i =1; i < n; i++) {
s[i-1] = s[i];
}
s[n - 1] = t;
}
public void LeftRotateString(String[] s, int n, int m) {
while (m-- != 0) {
LeftShiftOne(s, n);
}
for(int i=0;i<n;i++){
System.out.println(s[i]);
}
}
public static void main(String []args){
Transfet a=new Transfet();
//String[] s=new String[5];
String[] s={"a","b","c","d","e","f","g"};
a.LeftRotateString(s, 7, 3);
}
}
结果如下:d
e
f
g
a
b
c
该种方法的时间复杂度较高。