压缩字符串方法不返回新字符串吗?

时间:2018-11-08 06:04:06

标签: java string methods compression

我正在尝试制作一种压缩字符串的方法。例如,该方法将采用“ ttttesst”并返回“ 4te2st”。

当我运行该方法并打印结果时,我得到:“”

public class Compress {

public static String compress(String original){
    int count = 1;
    int oglength = original.length()-1;
    StringBuilder newword = new StringBuilder("");
    for(int i = 0; i < oglength; i = i+count){
        count = 1;
        for(int k = 1; k < oglength-k-i; k++){
            if(original.charAt(i) == original.charAt(i+k)){
                count++;
                continue;
            } else if(original.charAt(i) != original.charAt(i+k) && original.indexOf(original.charAt(i+k)) - original.indexOf(original.charAt(i)) > 1){
                newword.append(newword);
                newword.append(count);
                newword.append(original.charAt(i));
                break;
            } else if(original.charAt(i) != original.charAt(i+k) && original.indexOf(original.charAt(i+k)) - original.indexOf(original.charAt(i)) == 1){
                newword.append(newword);
                newword.append(original.charAt(i));
                count++;
                break;
            }
        }
    }
    String returnword = newword.toString();
    return returnword;
}

2 个答案:

答案 0 :(得分:0)

在重复使用增量索引的情况下,Compress方法不添加任何内容。

以下是根据您的方法提供的有效版本:

public static String compress(String original) {
    int count;
    StringBuilder builder = new StringBuilder();

    for (int i = 0; i < original.length(); i = i + count) {
        count = 1;
        for (int k = i + 1; k < original.length(); k++) {
            if (original.charAt(i) == original.charAt(k)) {
                count++;
            } else {
                break;
            }
        }

        if (count > 1) {
            builder.append(count).append(original.charAt(i));
        } else {
            builder.append(original.charAt(i));
        }
    }
    return builder.toString();
}

答案 1 :(得分:0)

我认为您对程序感到困惑,因为unnnecessary loops会增加复杂性,而if-else ladder会比较您无法记住的字符(这是{{1 }}可能会对您有帮助)。

我不明白您要尝试使用哪种用例,但是如果您确实想要上面提到的内容,那么下面的代码片段将为您解决。

debugging我只考虑了基本情况。对于大量的测试用例,可能只需要进行一些小的改动即可。

Note:

您还可以参考以下链接, Count number of occurrence of charactersHashMap ImplementationHashing used for counting occurrence of character,以更好地理解如何解决此类问题。

我希望这会有所帮助!