从rle输出中排除单个字符?

时间:2015-11-04 05:01:04

标签: java compression

    public static String compress(String original) {
    StringBuffer dest = new StringBuffer();
    for (int i = 0; i < original.length(); i++) {
        int runLength = 1;
        while (i+1 < original.length() && original.charAt(i) == original.charAt(i+1)) {
            runLength++;
            i++;
        }
        dest.append(runLength);
        dest.append(original.charAt(i));
    }
    return dest.toString();
}

大家好,所以我有一个代码块用于使用RLE算法压缩短语的方法。我无法弄清楚如何使方法排除将RLE压缩应用于输出中的单个字符。

此刻,如果用户输入“fffgggttth”,则代码输出“3f3g3t1h”,但我希望输出单独留下h,所以它只是“3f3g3th”。

我觉得解决方案涉及到阻止之前的中断或继续声明,但我可能是错的。谢谢!

1 个答案:

答案 0 :(得分:0)

以下是对您的问题的简单回答:

if(runLength > 1) dest.append(runLength);

简单地说,如果一个字符出现不止一次,它只会添加连续出现的字符数。如果角色连续只出现一次,则不会追加长度(即1)。确保考虑到减压方法中没有出现1。