解题思想:通过双指针进行遍历即可
class Solution(object):
def compress(self, chars):
"""
:type chars: List[str]
:rtype: int
"""
if len(chars) <= 1:
return len(chars)
write, read = 0, 0
while read < len(chars):
current_char = chars[read]
count = 0
while read < len(chars) and chars[read] == current_char:
read += 1
count += 1
chars[write] = current_char
write += 1
if count > 1:
for c in str(count):
chars[write] = c
write += 1
return write
if (chars.size() <= 1) {
return chars.size();
}
int write = 0, read = 0;
while (read < chars.size()) {
char current_char = chars[read];
int count = 0;
while (read < chars.size() && chars[read] == current_char) {
read++;
count++;
}
chars[write] = current_char;
write++;
if (count > 1) {
std::string count_str = std::to_string(count);
for (char c : count_str) {
chars[write] = c;
write++;
}
}
}
return write;