字符串压缩之C++实现
2014-01-04 15:01
253 查看
题目: 输入一个字符串,输出对其压缩过的形式。
如输入为:aaabbbccc则输出为3a3b3c;如输入为abbc,则输出为a2bc。
aaabbbccc ----> 3a3b3c
abc ----> abc
如输入为:aaabbbccc则输出为3a3b3c;如输入为abbc,则输出为a2bc。
aaabbbccc ----> 3a3b3c
abc ----> abc
#include <iostream> #include <string> using namespace std; int main() { int cnt = 1;///cnt the number of every char int pos = 1; char tmp_A,tmp_B; string ori_str, sht_str; string::size_type ori_len; char c_cnt; cout<<"input the ori string"<<endl; cin>>ori_str; ori_len = ori_str.size(); for (; pos < static_cast<int>(ori_len); ++pos) { tmp_A = ori_str[pos - 1]; tmp_B = ori_str[pos]; if (tmp_A != tmp_B && pos != static_cast<int>(ori_len-1)) ///没到末尾的时候,AB不同 { if (cnt == 1) { sht_str.push_back(tmp_A); } else { c_cnt = cnt + '0'; sht_str.push_back(c_cnt); sht_str.push_back(tmp_A); cnt = 1; } } else if (tmp_A != tmp_B && pos == static_cast<int>(ori_len-1)) ///在末尾,但是A,B不同 { if (cnt == 1) { sht_str.push_back(tmp_A); } else { sht_str.push_back(cnt); sht_str.push_back(tmp_A); cnt = 1; } sht_str.push_back(tmp_B); } else if (tmp_A == tmp_B && pos != static_cast<int>(ori_len-1)) ///不在末尾,AB相同 { ++cnt; } else if (tmp_A == tmp_B && pos == static_cast<int>(ori_len-1)) ///在末尾,AB相同 { cnt++; c_cnt = cnt + '0'; sht_str.push_back(c_cnt); sht_str.push_back(tmp_A); } } cout<<sht_str; return 0; }
相关文章推荐
- 字符串压缩之C++实现
- 华为(C++实现字符串压缩程序)
- 字符串压缩C++实现
- c/c++整理--实现删除字符串所有指定字符
- C++实现从字符串中查找是否含有另一段字符串
- C++实现矩阵压缩存储与(快速)转置
- C++实现字符串与数字的连接
- 求一个字符串中连续出现次数最多的字串 c++实现方法
- 用C++实现文件压缩
- c++实现字符串strcat()连接
- C++实现查找字符串中的数字,并输出
- C++ 用qsort()实现字符串数组元素排序
- String类的字符串操作(C++实现)
- UTF-8编码的字符串拆分成单字、获取UTF-8字符串的字符个数的代码及原理(c++实现)
- C++实现字符串类型(String16/String8/const char/char)转换
- C++ 删除字符串的两种实现方式
- .NET中字符串split的C++实现
- C++:实现split分割字符串
- C++实现十六进制字符串转换为十进制整数的方法
- JAVA 实现文件(字符串)压缩与解压