class Solution {
public:
int compress(vector<char>& chars) {
int n=chars.size();
//left表示子串最左侧
int write=0,left=0;
//write 表示写指针
for(int read=0;read<n;read++){
if(read==n-1||chars[read]!=chars[read+1]){
chars[write++]=chars[read];
int num=read-left+1;
if(num>1){
int anchor=write;
while(num>0){
chars[write++]=num%10+'0';
num=num/10;
}
//将数量重排
reverse(&chars[anchor],&chars[write]);
}
left=read+1;
}
}
return write;
}
};
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交