fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <regex>
  4.  
  5. std::string rr(const std::string& s) {
  6. if (s.empty()) return s;
  7.  
  8. std::string c;
  9. int cnt = 1;
  10. for (size_t i = 1; i < s.length(); ++i) {
  11. if (s[i] == s[i - 1]) {
  12. cnt++;
  13. } else {
  14. c += s[i - 1] + std::to_string(cnt);
  15. cnt = 1;
  16. }
  17. }
  18. c += s.back() + std::to_string(cnt);
  19.  
  20. if (c.length() < s.length()) return c;
  21.  
  22. std::regex pattern("([A-Za-z])1(?!\\d)");
  23. std::string fc = std::regex_replace(c, pattern, "$1");
  24. if (fc.length() < s.length()) return fc;
  25.  
  26. return s;
  27. }
  28.  
  29. int main() {
  30. std::string input;
  31. std::cin >> input;
  32. std::cout << rr(input) << std::endl;
  33. return 0;
  34. }
  35.  
Success #stdin #stdout 0.01s 5284KB
stdin
KKKKKKKKKKKKKKKKKKKKKQWERTYUIOPASDFGKKZXC
stdout
K21QWERTYUIOPASDFGK2ZXC