字符串压缩

来源:互联网 发布:知乎 金庸 编辑:程序博客网 时间:2024/06/18 12:39

把连续出现的字符压缩成单个字符

问题描述:
通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。
压缩规则:
1. 仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc".
2. 压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"

示例 
输入:“cccddecc”   输出:“3c2de2c”
输入:“adef”     输出:“adef”
输入:“pppppppp” 输出:“8p”


代码:

#include <iostream>#include <string>using namespace std;void stringZIP(const char *s1, long length, char *s2){int i=0,j,n = 1 ,k = 0;for (j = 1; j <= length;++j){//n = 1;if (s1[j-1] == s1[j]){++n;continue;}if (n > 1){s2[k] = n + '0';s2[k + 1] = s1[j-1];k += 2;n = 1;}else{s2[k] = s1[j-1];++k;n = 1;}}s2[j] = '\0';}int main(){char s1[20] = { 0 }, s2[30] = {0};cin >> s1;stringZIP(s1, strlen(s1), s2);cout << "s2:"<<s2 << endl;return 0;}


原创粉丝点击