通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc

    xiaoxiao2026-03-30  8

    #include<iostream> /* 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串压缩程序,将字符串中连续出席的重复字母进行压缩,并输出压缩后的字符串。 压缩规则: 1、仅压缩连续重复出现的字符。比如字符串"abcbc"由于无连续重复字符,压缩后的字符串还是"abcbc"。 2、压缩字段的格式为"字符重复的次数+字符"。例如:字符串"xxxyyyyyyz"压缩后就成为"3x6yz"。 要求实现函数: void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr); 【输入】 pInputStr: 输入字符串 lInputLen: 输入字符串长度 【输出】 pOutputStr: 输出字符串,空间已经开辟好,与输入字符串等长; 【注意】只需要完成该函数功能算法,中间不需要有任何IO的输入输出 示例 输入:“cccddecc” 输出:“3c2de2c” 输入:“adef” 输出:“adef” 输入:“pppppppp” 输出:“8p” */ using namespace std; void stringZip(const char *pInputStr, long lInputLen, char *pOutputStr) { for (int i = 0; i < lInputLen; ) { int count = 0; //for (char j = 'a'; j < 'a' + 26; j++) if (pInputStr[i]<'a' || pInputStr[i]>'z') { *pOutputStr = pInputStr[i]; i++; } else { char temp = pInputStr[i]; while (pInputStr[i]==temp) { count++; i++; } if (count > 1) { *pOutputStr = '0' + count; pOutputStr++; } *pOutputStr = pInputStr[i - 1]; pOutputStr++; count = 0; } } } void main() { char a[] = "pppppppp"; long len = strlen(a); char *p = new char[len+1]; memset(p, 0, len + 1); stringZip(a, len, p); cout <<"压缩后字符串:"<< p<<endl; //system("pause"); cin.get(); }
    转载请注明原文地址: https://ju.6miu.com/read-1308334.html
    最新回复(0)