class Solution {
public int compress(char[] chars) {
int i = -1;
int j = 0;
while (j < chars.length) {
int k = j;
while (k < chars.length && chars[k] == chars[j]) {
k++;
}
if (k - j == 1) {
chars[i + 1] = chars[j];
i++;
j = k;
}else {
chars[++i] = chars[j];
int t = k - j;
int bit = 0;
while (t > 0) {
t /= 10;
bit++;
}
t = k - j;
int position = i + bit;
while (position > i) {
chars[position--] = (char) ('0' + t % 10);
t /= 10;
}
i = i + bit;
j = k;
}
}
return i + 1;
}
}
细节比较多。需要进行连续思考。int数值转char需要:(char)(int + ‘0’)