【发布时间】:2015-04-08 14:47:26
【问题描述】:
Run Length Encoding 采用重复出现的字符的字符串,例如 qqqqqWWWWr,并将其转换为 5q4Wr。重复出现的字符前面应该加上它连续出现的次数。如果它在一行中只出现一次,则不应以数字开头。
这是我目前所拥有的,我似乎无法让它正常工作:
public class Compress {
public static void main(String[] args) {
System.out.print("Enter a string: ");
String s = IO.readString();
int currentRunLength = 1;
String compressedString = "";
for (int i = 0; i < s.length(); i++) {
if (i == s.length() - 1){
if (currentRunLength == 1) {
compressedString += s.charAt(i);
break;
} else {
compressedString += currentRunLength + s.charAt(i);
break;
}
}
if (s.charAt(i) == s.charAt(i + 1)) {
currentRunLength++;
}
if (s.charAt(i) != s.charAt(i + 1) && currentRunLength > 1) {
compressedString += currentRunLength + s.charAt(i);
currentRunLength = 1;
}
if (s.charAt(i) != s.charAt(i + 1) && currentRunLength == 1) {
compressedString += s.charAt(i);
}
}
IO.outputStringAnswer(compressedString);
}
}
示例运行
输入一个字符串:qqqqWWWr
结果:“117q90Wr”
【问题讨论】:
标签: java encoding compression