題目描述:
彙編語言中有一種移位指令叫做循環左移(ROL),現在有個簡單的任務,就是用字符串模擬這個指令的運算結果。對於一個給定的字符序列S,請你把其循環左移K位後的序列輸出。例如,字符序列S=“abcXYZdef”,要求輸出循環左移3位後的結果,即“XYZdefabc”。
思路分析:
n作爲字符串左旋的位置,其實就是將字符串[0,n)放置在字符串[n,length)的後面,從而組成新的字符串。
代碼實現:
public class Exercise21 {
public static void main(String[] args) {
String str = "helloworld";
String temp = leftRotateString(str,5);
System.out.println(temp);
}
//簡便寫法
private static String leftRotateString1(String str, int n) {
//如果該字符串爲空或者它的長度小於等於1,直接返回str
if(str == null || str.length() <= 1){
return str;
}
//保存str的長度
int len = str.length();
//將str追加到str後面
str += str;
//截取從n到len+n的字符串
return str.substring(n,len + n);
}
private static String leftRotateString(String str, int n) {
//如果該字符串爲空或者它的長度小於等於1,直接返回str
if(str == null || str.length() <= 1){
return str;
}
//保存str的長度
int len = str.length();
//創建StringBuilder對象,對字符串進行更改
StringBuilder sb = new StringBuilder();
//截取從n到str.length() ,也可以寫成sb.append(str.substring(n));
sb.append(str.substring(n,len));
//截取從0到n的字符串,添加到sb中
sb.append(str.substring(0,n));
//調用sb的toString()方法返回字符串即可
return sb.toString();
}
}
題目總結:
左旋轉字符串其實就是字符串的截取+拼接。
心靈雞湯:任何的收穫都不是白得來的,也不是天上掉下來,更不是運氣好,所謂的運氣好,只不過是花了別人不願意花的時間,費了別人懶得費的功夫,吃了別人吃不下的苦,受了很多委屈跟磨難才見到光明的,所以,纔會越努力越幸運!