使用确定的增量移动字符串中的字符

时间:2014-11-21 22:26:25

标签: java arrays string for-loop char

如果增量设置为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 个答案:

答案 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;