-1
Я должен сделать алгоритм RLE в Java с экранирующим символом (Q)RLE алгоритм сжатия Java
примером 1, если я иметь вход как:
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;
}
проблема с номером, как thisaaabbcccc666iii => aaabbcccc6633333ii
Вы не описать проблему вы имеете с "числом, как это" и нет актуального вопроса относительно этой проблемы. Это о числовых символах? Кодирование или декодирование? Как вы думаете, что происходит не так? И т.д.. – zapl