如果增量设置为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;
}
}
答案 0 :(得分:1)
问题是你不是每次都清除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;