递归地解压缩RLE字符串

时间:2015-12-11 19:33:33

标签: java

我收到此错误

"Exception in thread "main" java.lang.StackOverflowError
at java.lang.String.<init>(String.java:201)
at java.lang.String.substring(String.java:1920)
at StringRec.decompress(StringRec.java:18)
at StringRec.decompress(StringRec.java:19)
at StringRec.decompress(StringRec.java:19)
....
...."

当我在此代码中输入字符串q9w5e2rt5y4qw2Er3T时。

public static String decompress(String compressedText) {

    if(compressedText.length() <= 1){
        return compressedText;
    }
    else if(Character.isLetter(compressedText.charAt(0)) == true){
        return compressedText.charAt(0)+decompress(compressedText.substring(1));
    }
    else if(Character.isDigit(compressedText.charAt(0)) == true){
        char c = compressedText.charAt(0);
        int a = c--;
        char b = (char) a;
        compressedText = b+compressedText.substring(1);
        return c+decompress(compressedText);
    }
    return compressedText.charAt(0)+decompress(compressedText.substring(1));

}

有谁知道为什么会这样?因为对于这个赋值,我必须解压缩一个字符串(假设字符计数将是单位数字(一个字符不会连续重复9次以上),而不使用任何循环。

1 个答案:

答案 0 :(得分:0)

你快到了......这是你需要的提示:

tree.treeInstance.GetComponent<MeshFilter>().mesh;

因为我不认为这些行正在按照你的意图行事:

int val = Character.getNumericValue(compressedText.charAt(0))