利用字符重复出现的次数,编写一个方法,实现基本的字符串压缩功能。比如,字符串"aabcccccaaa"会变为"a2b1c5a3"。若“压缩”后的字符串没有变短,则返回原先的字符串。
分析:依次遍历输入字符串的每个字符,若当前字符与前一个字符相同,则计数加1;否则,将前一个字符及其出现次数存入压缩字符串,并将计数置1。
1 #include2 #include 3 #include 4 #include 5 6 using namespace std; 7 8 string compress( string& str ); 9 10 int main( int argc, char *argv[] ) {11 string data_file = "./1.5.txt";12 ifstream ifile( data_file.c_str(), ios::in );13 if( !ifile.is_open() ) {14 fprintf( stderr, "cannot open file: %s\n", data_file.c_str() );15 return -1;16 }17 string str;18 while( getline( ifile, str ) ) {19 cout < <<": ";20 cout < ss.str().size() ) { return ss.str(); }37 return str;38 }
测试文件
aaaabaaaaabaabbaaabbaaaaabbbbbbabcdefghello word dfd dfd asdf sd