编程练习:字符串过滤与压缩

需积分: 0 0 下载量 154 浏览量 更新于2024-09-13 收藏 85KB DOC 举报
"编程实例--自己整理" 在这些编程实例中,我们有三个不同的任务,分别是字符串过滤、字符串压缩和计算简单算术表达式的结果。这三个问题都是基础的字符串处理和算法设计,对于初学者或者想要巩固基础知识的程序员来说非常有用。 1. 字符串过滤(60分) 这个任务要求编写一个`stringFilter`函数,它接收一个包含小写字母的字符串,并删除所有非首次出现的字符。换句话说,如果一个字符在字符串中出现了多次,函数只保留它的第一次出现。例如,输入字符串"abacacde"经过过滤后变成"abcde"。函数的接口如下: ```cpp void stringFilter(const char* pInputStr, long lInputLen, char* pOutputStr); ``` 在这里,`pInputStr`是输入字符串,`lInputLen`是输入字符串的长度,`pOutputStr`是预分配好的输出字符串,长度与输入字符串相同。函数的实现应该只关注算法,不涉及输入输出的处理。 2. 字符串压缩(40分) 第二个任务是实现`stringZip`函数,它对连续重复的字母进行压缩。例如,输入字符串"xxxyyyyyyz"压缩后变为"3x6yz"。函数接口与前一个类似: ```cpp void stringZip(const char* pInputStr, long lInputLen, char* pOutputStr); ``` 压缩规则是只压缩连续重复的字符,并以"重复次数+字符"的形式表示。例如,"cccddecc"压缩后为"3c2de2c"。同样,函数只负责计算和填充输出字符串,不处理输入输出。 3. 计算简单算术表达式(50分) 最后一个问题要求读取一个100以内的加减运算表达式,如"操作数1运算符 操作数2",然后返回运算结果作为字符串。例如,输入"3 + 5"应返回"8"。虽然没有提供具体的函数接口,但我们可以假设需要设计一个函数来实现这个功能,可能类似于: ```cpp std::string calculateExpression(const std::string& input); ``` 这个函数需要解析输入的字符串,识别操作数和运算符,然后执行相应的加法或减法运算。 总结这三个实例,它们涵盖了基本的字符串处理技巧,包括字符遍历、计数、条件判断以及简单的算术运算。通过解决这些问题,程序员可以提升对字符串操作和算法设计的理解,同时锻炼问题解决能力。在实现这些函数时,需要注意内存管理,确保不越界,且输出字符串的长度足够存储结果。此外,良好的代码风格和注释也是必不可少的。