rle压缩算法java
我必须在java中使用转义字符(Q)执行RLE算法 示例1如果我有如下输入:rle压缩算法java,java,compression,Java,Compression,我必须在java中使用转义字符(Q)执行RLE算法 示例1如果我有如下输入: 77777 => 57 BBBBBBBBB => 10B FBFB8923 => 004FBFB8923 2365553422 => 005236555342200 这是我编写的代码: public String coderRLE(string text) { String res = new String(); char[] charArray
77777 => 57
BBBBBBBBB => 10B
FBFB8923 => 004FBFB8923
2365553422 => 005236555342200
这是我编写的代码:
public String coderRLE(string text) {
String res = new String();
char[] charArray = text.toCharArray();
char caractere = 0;
int num = 0;
int i = 0;
for (char c : charArray) {
if (c != caractere && i != 0) {
if (num >= 2) {
res += num;
res += caractere;
} else {
res += caractere;
}
num = 1;
} else {
num++;
}
caractere = c;
i++;
}
if (num >= 2) {
res += num;
res += caractere;
} else {
res += caractere;
}
return res;
}
public String decoderRLE(String text) {
String res = new String();
char[] charArray = text.toCharArray();
for (int i = 0;i<charArray.length-1;i++) {
char s = charArray[i];
if (!Character.isDigit(s)) {
res += s;
} else {
int num = Integer.parseInt(String.valueOf(s));
for (int j = 0; j < num - 1; j++) {
res += charArray[i+1];
}
}
}
return res;
}
公共字符串代码(字符串文本){
String res=新字符串();
char[]charArray=text.toCharArray();
字符=0;
int num=0;
int i=0;
用于(字符c:charArray){
如果(c!=caractere&&i!=0){
如果(数值>=2){
res+=num;
res+=字符;
}否则{
res+=字符;
}
num=1;
}否则{
num++;
}
caractere=c;
i++;
}
如果(数值>=2){
res+=num;
res+=字符;
}否则{
res+=字符;
}
返回res;
}
公共字符串解码器(字符串文本){
String res=新字符串();
char[]charArray=text.toCharArray();
对于(int i=0;i aaabbccc6633333ii)尝试
public static String encode(String source) {
StringBuffer dest = new StringBuffer();
for (int i = 0; i < source.length(); i++) {
int runLength = 1;
while (i+1 < source.length() && source.charAt(i) == source.charAt(i+1)) {
runLength++;
i++;
}
dest.append(runLength);
dest.append(source.charAt(i));
}
return dest.toString();
}
输出
你没有描述“像这样的数字”的问题,也没有关于这个问题的实际问题。是关于数字字符?编码还是解码?你认为哪里出了问题?等等。。
String example = "aaabbcccc666iii";
System.out.println(encode(example));
3a2b4c363i