思路:
首先设置双指针,一个指针是当前read,一个指针是上一个发生变化的那个点anchor,那么数字就是read - anchor + 1就是下一个相同的元素有多少个c
再将char[write] = c,*write++*即可
代码:
class Solution {
public int compress(char[] chars) {
int anchor = 0, write = 0;
for (int read = 0; read < chars.length; read++) {
if (read + 1 == chars.length || chars[read + 1] != chars[read]) {
chars[write++] = chars[anchor];
if (read > anchor) {
for (char c: ("" + (read - anchor + 1)).toCharArray()) {
chars[write++] = c;
}
}
anchor = read + 1;
}
}
return write;
}
}