// CC1.5.cpp : Implement a method to perform basic string compression using the counts of repeated characters. For example, the string aabcccaaa would become a2b1c3a3. If the "compressed" string would not become smaller than the original string, return the original string.
//
#include "stdafx.h"
#include<string>
#include<iostream>
using namespace std;
// assume all the repeated chars are sorted together
string CompressRepeat(string s){
if (s=="") return s;
int len=s.length();
string mystr="";
char c=s[0];
int count=1;
for(int i=1;i<len;i++)
if (s[i]==c) count++;
else {
mystr += c+ to_string(count);
c=s[i];
count=1;
}
mystr = mystr+c+to_string(count);
int len1 = mystr.length();
if (len1 >= len) return s;
else return mystr;
}
void main(){
string s1="aabbbbbcccd";
string s2="abcd";
string s3=NULL;
cout<<s1<<" after compressing "<<CompressRepeat(s1)<<endl;
cout<<s2<<" after compressing "<<CompressRepeat(s2)<<endl;
cout<<s3<<" after compressing "<<CompressRepeat(s3)<<endl;
system("pause");
}