#include <iostream>
#include <algorithm>
std::string compress_string(const std::string& s)
{
std::string res;
for (auto it = s.begin(); it != s.end(); ) {
const auto next = std::find_if(it + 1, s.end(), [&](char c) { return *it != c; });
const auto count = next - it;
res += *it;
if (count != 1) {
res += std::to_string(count);
}
it = next;
}
return res;
}
int main() {
std::cout << compress_string("abcde") << std::endl;
std::cout << compress_string("aaaaaaaaaaaabbbbbbbbbbcccc") << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8YWxnb3JpdGhtPgogCiAKc3RkOjpzdHJpbmcgY29tcHJlc3Nfc3RyaW5nKGNvbnN0IHN0ZDo6c3RyaW5nJiBzKQp7CiAgICBzdGQ6OnN0cmluZyByZXM7CiAgICBmb3IgKGF1dG8gaXQgPSBzLmJlZ2luKCk7IGl0ICE9IHMuZW5kKCk7ICkgewogICAgICAgIGNvbnN0IGF1dG8gbmV4dCA9IHN0ZDo6ZmluZF9pZihpdCArIDEsIHMuZW5kKCksIFsmXShjaGFyIGMpIHsgcmV0dXJuICppdCAhPSBjOyB9KTsKICAgICAgICBjb25zdCBhdXRvIGNvdW50ID0gbmV4dCAtIGl0OwogICAgICAgIHJlcyArPSAqaXQ7CiAgICAgICAgaWYgKGNvdW50ICE9IDEpIHsKICAgICAgICAgICAgcmVzICs9IHN0ZDo6dG9fc3RyaW5nKGNvdW50KTsKICAgICAgICB9CiAgICAgICAgaXQgPSBuZXh0OwogICAgfQogICAgcmV0dXJuIHJlczsgICAgCn0KIAoKaW50IG1haW4oKSB7CiAgICBzdGQ6OmNvdXQgPDwgY29tcHJlc3Nfc3RyaW5nKCJhYmNkZSIpIDw8IHN0ZDo6ZW5kbDsKICAgIHN0ZDo6Y291dCA8PCBjb21wcmVzc19zdHJpbmcoImFhYWFhYWFhYWFhYWJiYmJiYmJiYmJjY2NjIikgPDwgc3RkOjplbmRsOwp9