无法解密包含字母后跟频率的字符串

时间:2016-10-21 12:01:40

标签: java string

对于具有字符和字符出现次数的给定字符串,请解码为完整字符串。在编码期间,如果角色只出现一次,则该角色旁边不会有任何数字。

输入:"a5br3"
输出:"aaaaabrrr"

我得到的输出为:

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr

我的逻辑是否正确?我的代码出了什么问题?

public String func (String str){
    if(str==null){
        return null;
    }
    String result="";
    for(int i=0;i<str.length();i++){
        char c= str.charAt(i);
        if(Character.isLetter(c)){
            result+=str.charAt(i);
        }
        else if(Character.isDigit(c)){
            for(int j=0;j<c;j++){
                result+=str.charAt(i-1);
            }
        }
    }

    return result;
}

1 个答案:

答案 0 :(得分:4)

您将数字的数值与其字符代码混淆。此外,由于字符已经附加到字符串一次,我们需要在循环期间添加少一个副本。您可以使用以下代码:

for(int j=1;j<(c - '0');j++) ...