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”。
我觉得解决方案涉及到阻止之前的中断或继续声明,但我可能是错的。谢谢!
答案 0 :(得分:0)
以下是对您的问题的简单回答:
if(runLength > 1) dest.append(runLength);
简单地说,如果一个字符出现不止一次,它只会添加连续出现的字符数。如果角色连续只出现一次,则不会追加长度(即1)。确保考虑到减压方法中没有出现1。