fork(2) download
  1. #include <iostream>
  2. #include <string>
  3.  
  4.  
  5. using namespace std;
  6.  
  7. void CompressAndShow(string s){
  8.  
  9. cout << s[0];
  10. if (s.length() > 1)
  11. {
  12. int i = 1;
  13. int counter = 1;
  14. while (i < s.length())
  15. {
  16. while (s[i-1] == s[i])
  17. {
  18. counter++;
  19. i++;
  20. }
  21. if (counter == 1)
  22. {
  23. cout << s[i];
  24. i++;
  25. }
  26. else if (counter == 2)
  27. {
  28. cout << s.substr(i-1, 2);
  29. counter = 1;
  30. i++;
  31. }
  32. else if (counter > 2)
  33. {
  34. cout << counter << s[i];
  35. counter = 1;
  36. i++;
  37. }
  38. }
  39. }
  40. cout << endl;
  41. }
  42.  
  43. int main()
  44. {
  45. int sets;
  46. cin >> sets;
  47. while (sets--)
  48. {
  49. string entry;
  50. cin >> entry;
  51. CompressAndShow(entry);
  52. }
  53. return 0;
  54. }
  55.  
Success #stdin #stdout 0s 15240KB
stdin
6
a
aa
aaab
baaassa
bbaaaaa
bbbbaaaababababa
stdout
a
aa
a3b
ba3ssa
bba5
b4a4babababa