比如原來是"abcdefghi"如果n=2,移位後應該是"hiabcdefgh"。 (以字符串和n爲入參;允許使用庫函數。注意考慮程序的健壯性。)
public class StrYouYi2 {
/*
* (羣碩)8. 編寫一個函數,作用是把一個char組成的字符串循環右移n個。
* 比如原來是"abcdefghi"如果n=2,移位後應該是"hiabcdefgh"。 (以字符串和n爲入參;允許使用庫函數。注意考慮程序的健壯性。)
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一連串字符串:");
String str = sc.next();
System.out.println("請輸入左移或右移的位數:");
int num = sc.nextInt();
System.out.println("左移" + num + "位:" + leftMove(str, num));
System.out.println("右移" + num + "位:" + RightMove(str, num));
}
private static String RightMove(String str, int num) {
// 右移思想:整體反轉,部分反轉
str = reChange(str);
String first = str.substring(0, num);
String right = str.substring(num);
first = reChange(first);
right = reChange(right);
str = first + right;
return str;
}
private static String leftMove(String str, int num) {
String first = str.substring(0, num);
String last = str.substring(num);
first = reChange(first);
last = reChange(last);
String re = first + last;
re = reChange(re);
return re;
}
private static String reChange(String str) {
// TODO Auto-generated method stub
char[] ch = str.toCharArray();
char temp;
for (int i = 0; i < ch.length / 2; i++) {
temp = ch[i];
ch[i] = ch[ch.length - i - 1];
ch[ch.length - i - 1] = temp;
}
return String.valueOf(ch);
}
}