2014-11-21 57 views
0

如果将增量设置为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; 
    } 
} 

回答

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;