public static final UnaryOperator<String> encode_1 = in -> {
int length = in.length();
if (length < 2)
return in;
StringBuilder out = new StringBuilder(length + 1);
int counter = 0;
int check;
char compare;
for (int place = 0; place < length; place++) {
compare = in.charAt(place);
check = place + 1;
if (length > check && compare == in.charAt(check)) {
counter++;
continue;
}
if (counter == 0)
out.append(compare);
else if (counter == 1) {
out.append(compare);
out.append(compare);
} else {
out.append(counter + 1);
out.append(compare);
}
counter = 0;
}
return out.toString();
};
public static final UnaryOperator<String> decode_0 = in -> {
int length = in.length();
if (length < 2)
return in;
StringBuilder out = new StringBuilder(length * 4);
for (int count = 0; count < length; count++) {
if (!Character.isDigit(in.charAt(count))) {
out.append(in.charAt(count));
continue;
}
int start = count;
while (Character.isDigit(in.charAt(count)))
count++;
for (int j = 0; j < Integer.parseInt(in.substring(start, count), 10); j++)
out.append(in.charAt(count));
}
return out.toString();
};
Comments
0 B
|👍
/👎