1.5

压缩字符串, 字符串"aabccccaaa"变成"a2b1c5a3",如果没有变短则,返回原字符串

* //O(n) time, O(n) space

* 代码

string compression(string s){
if(s.empty() || s.length()==0) return "";

string ret;
int cnt=0; //记录每个字符的重复次数
char cur;

for(int i=0;i<s.length();i++){
if(cnt==0)
cur=s[i];
++cnt;

if(i+1==s.size() || s[i+1]!=cur){
ret.push_back(cur);
ret+=itoa2(cnt);
cnt=0;
}
}

return ret.size()<s.size()?ret :s;
}

int main(int argc, char *argv[])
{
cout << compression("aabcccccaaa") << endl;
cout << compression("abcad") << endl;
cout << compression("abcadd") << endl;

cout << compression("aaaaaaaaaaa") << endl;
cout << compression("a") << endl;
return 0;
}

1.5

压缩字符串, 字符串"aabccccaaa"变成"a2b1c5a3",如果没有变短则,返回原字符串

* //O(n) time, O(n) space

* 代码

string compression(string s){
if(s.empty() || s.length()==0) return "";

string ret;
int cnt=0; //记录每个字符的重复次数
char cur;

for(int i=0;i<s.length();i++){
if(cnt==0)
cur=s[i];
++cnt;

if(i+1==s.size() || s[i+1]!=cur){
ret.push_back(cur);
ret+=itoa2(cnt);
cnt=0;
}
}

return ret.size()<s.size()?ret :s;
}

int main(int argc, char *argv[])
{
cout << compression("aabcccccaaa") << endl;
cout << compression("abcad") << endl;
cout << compression("abcadd") << endl;

cout << compression("aaaaaaaaaaa") << endl;
cout << compression("a") << endl;
return 0;
}

results matching ""

    No results matching ""