利用字符出现的次数,编写一个方法,实现基本的字符串压缩功能。

来源:互联网 发布:淘宝零食店好做吗 编辑:程序博客网 时间:2024/06/04 19:00

利用字符出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串为aabccccaaa,会变为a2b1c5a3.若“压缩”后的字符串没有变短,则返回原先的字符串。

1.使用stringstream将int转化为string

2string (1)

string& append (const string& str);
substring (2)
string& append (const string& str, size_t subpos, size_t sublen);
c-string (3)
string& append (const char* s);
buffer (4)
string& append (const char* s, size_t n);
fill (5)
string& append (size_t n, char c);
range (6)
template <class InputIterator>   string& append (InputIterator first, InputIterator last);
initializer list(7)
string& append (initializer_list<char> il);
3.

std::string::push_back

void push_back (char c);
Append character to string
Appends character c to the end of the string, increasing its length by one.

string StringCompress(const string &s){string retStr;if(s.length() == 0)return retStr;char tmpChar = s.at(0);int charCount = 0;for(string::const_iterator it = s.begin();it != s.end();it++){if(*it ==tmpChar){charCount++;}else{retStr.push_back(tmpChar);//使用stringstream将int转化为stringstringstream ss;ss<<charCount;string tmpStr = ss.str();retStr.append(tmpStr);tmpChar = *it;charCount = 1;}if (it == s.end()-1){retStr.push_back(tmpChar);//使用stringstream将int转化为stringstringstream ss;ss<<charCount;string tmpStr = ss.str();retStr.append(tmpStr);}}if (retStr.length()<s.length()){return retStr;}else{return s;}}


0 0
原创粉丝点击