自己写的未通过的程序
int compress(vector<char>& chars) {
int slow=0,fast=0,sum=0;
while(fast<=chars.size()){
if(chars[slow]==chars[fast])
{
fast++;
sum++;
}
else{
if(sum==1)
slow++;
else
{
if(sum/100) chars[++slow]='0'+sum/100;
if(sum%100/10) chars[++slow]='0'+sum%100/10;
chars[++slow]='0'+sum%10;
chars[++slow]=chars[fast];
}
sum=0;
}
}
return slow;
}
void fill ( vector<char> & chars , int &pos , int num ){
string tmp = to_string( num ) ;
for( int i=0 ; i<tmp.size() ; i++)
chars[pos++] = tmp[i];
}
int compress(vector<char>& chars) {
if( chars.size() <= 1 )
return chars.size() ;
char start = chars[0] ;
int pos = 1 ;
int count = 0 ;
for( int i=0 ; i < chars.size() ; i++){
if( chars[i] == start )
count ++ ;
else{
if( count != 1 )
fill(chars, pos , count );
chars[pos++] = chars[i];
start = chars[i] ;
count = 1 ;
}
}
if( count != 1 )
fill(chars, pos , count );
return pos;
}