#include <iostream>
#include <ctype.h>
int get_l10(int n){
if(n < 10)
n = 1;
else if(n < 100)
n = 2;
else if(n < 1000)
n = 3;
return n;
}
char* s_rep_len(char* s){
char* p1, *p2, *p3, *p4, ch;
int i, n = 0;
p1 = p2 = p3 = s;
do {
ch = *p1 = *p2;
if(! isalpha(*p1)){
if(n > 0){
i = get_l10(n);
p4 = p3 + (i - 1);
while(n != 0){
*p4-- = (char)(n % 10) + '0';
n /= 10;
}
p3 += i;
p1 += i + 1;
*p3++ = ' ';
n = 0;
}
++p1;
} else
++n;
++p2;
} while(ch != '\0');
*p3 = '\0';
return s;
}
int main(void){
char s[] = "An example of a string of characters";
std::cout << s_rep_len(s) << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8Y3R5cGUuaD4KCgppbnQgIGdldF9sMTAoaW50IG4pewoJaWYobiA8IDEwKQoJCW4gPSAxOwoJZWxzZSBpZihuIDwgMTAwKQoJCW4gPSAyOwogCWVsc2UgaWYobiA8IDEwMDApCgkJbiA9IDM7ICAgICAgCglyZXR1cm4gbjsKfQoKCmNoYXIqIHNfcmVwX2xlbihjaGFyKiBzKXsKCWNoYXIqIHAxLCAqcDIsICpwMywgKnA0LCBjaDsKCWludCAgIGksIG4gPSAwOwoKCXAxID0gcDIgPSBwMyA9IHM7CgoJZG8gewoJCWNoID0gKnAxID0gKnAyOwoKCQlpZighIGlzYWxwaGEoKnAxKSl7CgoJCQlpZihuID4gMCl7CgoJCQkJaSAgPSBnZXRfbDEwKG4pOwoJCQkJcDQgPSBwMyArIChpIC0gMSk7CgkJCQl3aGlsZShuICE9IDApewoJCQkJCSpwNC0tID0gKGNoYXIpKG4gJSAxMCkgKyAnMCc7CgkJCQkJbiAgICAvPSAxMDsKCQkJCX0KCgkJCQlwMyAgICs9IGk7CgkJCQlwMSAgICs9IGkgKyAxOwoJCQkJKnAzKysgPSAnICc7CgkJCQluICAgICA9IDA7CgkJCX0KCgkJCSsrcDE7CgkJfSBlbHNlCgkJCSsrbjsKCQkrK3AyOwoKCX0gd2hpbGUoY2ggIT0gJ1wwJyk7CgoJKnAzID0gJ1wwJzsKCXJldHVybiBzOwp9CgoKaW50IG1haW4odm9pZCl7CgljaGFyIHNbXSA9ICJBbiBleGFtcGxlIG9mIGEgc3RyaW5nIG9mIGNoYXJhY3RlcnMiOwoJc3RkOjpjb3V0IDw8IHNfcmVwX2xlbihzKSA8PCBzdGQ6OmVuZGw7CglyZXR1cm4gMDsKfQ==