如果将增量设置为1,以下方法将正确移动字符串中的字符。当我将'k'的值设置得更高时,我会遇到困难。是什么原因引起的?
String cyclicLeftShift(String s, int k){
String finalString = "";
char[] newString = s.toCharArray();
char[] secString = new char[newString.length];
for(int r=0; r<k;r++){
secString[secString.length-1]=newString[0];
for(int i=0; i<s.length()-1; i++){
secString[i]= newString[i+1];
}
newString = secString;
}
for(int c=0; c<secString.length; c++){
finalString+=secString[c];
}
return finalString;
}
}
最佳答案
问题是您不是每次都清除secString。您确实想要一个单独的局部变量。尽管您可能想更改变量名称,但以下修改后的代码可以工作:
static String cyclicLeftShift(String s, int k) {
String finalString = "";
char[] newString = s.toCharArray();
char[] globalSecString = new char[newString.length];
for(int r=0; r<k; r++) {
char[] secString = new char[newString.length];
secString[secString.length-1]=newString[0];
for(int i=0; i<s.length()-1; i++) {
secString[i]= newString[i+1];
}
newString = secString;
globalSecString = secString;
}
for(int c=0; c<globalSecString.length; c++){
finalString+=globalSecString[c];
}
return finalString;