1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | #include <string> #include <iostream> #include <sstream> //slower, but handles strings of characters less than 2 billion std::string condense(const std::string& str){ std::string ret; if (str.length()>0) { auto begin=str.begin(); for(auto i=begin+1; i!=str.end(); ++i) { if(*i != *begin) { std::stringstream ss; ss << distance(begin, i); ret.append(ss.str()); ret.append(1, *begin); begin = i; } } } return ret; } int main(){ std::string in = "aaabbbbcccccdde"; std::cout << condense(in); //prints 3a4b5c2de } |
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3N0cmVhbT4KCi8vc2xvd2VyLCBidXQgaGFuZGxlcyBzdHJpbmdzIG9mIGNoYXJhY3RlcnMgbGVzcyB0aGFuIDIgYmlsbGlvbgpzdGQ6OnN0cmluZyBjb25kZW5zZShjb25zdCBzdGQ6OnN0cmluZyYgc3RyKXsKICAgIHN0ZDo6c3RyaW5nIHJldDsKICAgIGlmIChzdHIubGVuZ3RoKCk+MCkgewogICAgICAgIGF1dG8gYmVnaW49c3RyLmJlZ2luKCk7CiAgICAgICAgZm9yKGF1dG8gaT1iZWdpbisxOyBpIT1zdHIuZW5kKCk7ICsraSkgewogICAgICAgICAgICBpZigqaSAhPSAqYmVnaW4pIHsKICAgICAgICAgICAgICAgIHN0ZDo6c3RyaW5nc3RyZWFtIHNzOwogICAgICAgICAgICAgICAgc3MgPDwgZGlzdGFuY2UoYmVnaW4sIGkpOwogICAgICAgICAgICAgICAgcmV0LmFwcGVuZChzcy5zdHIoKSk7CiAgICAgICAgICAgICAgICByZXQuYXBwZW5kKDEsICpiZWdpbik7CiAgICAgICAgICAgICAgICBiZWdpbiA9IGk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gcmV0Owp9CgppbnQgbWFpbigpewogICAgc3RkOjpzdHJpbmcgaW4gPSAiYWFhYmJiYmNjY2NjZGRlIjsKICAgIHN0ZDo6Y291dCA8PCBjb25kZW5zZShpbik7ICAvL3ByaW50cyAzYTRiNWMyZGUKfQ==
-
upload with new input
-
result: Success time: 0s memory: 3064 kB returned value: 0
aaa
3a4b5c2d
-
result: Success time: 0s memory: 3064 kB returned value: 0
3a4b5c2d


