【问题标题】:Shifting Characters in a String with Determined Increments以确定的增量移动字符串中的字符
【发布时间】:2015-01-20 04:38:06
【问题描述】:

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

【问题讨论】:

    标签: java arrays string for-loop char


    【解决方案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;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多