华为上机试题:字符串处理

需积分: 34 0 下载量 136 浏览量 更新于2024-09-10 收藏 18KB DOCX 举报
"这篇文档包含了两道关于字符串处理的编程题目,出自2014年华为的上机测试。第一题是字符串过滤,要求编写一个函数移除输入字符串中重复的字符;第二题是字符串压缩,需要实现一个函数将连续重复的字符压缩成‘字符+次数’的形式。" 在华为的这两道上机试题中,我们主要涉及了两个关键的字符串处理技术: 1. 字符串过滤 题目要求编写`stringFilter`函数,接收一个输入字符串`pInputStr`,其长度为`lInputLen`,并提供一个已开辟好等长空间的输出字符串`pOutputStr`。目标是保留输入字符串中首次出现的字符,过滤掉后续重复的字符。这可以通过遍历输入字符串,使用一个辅助字符串`str2`来存储未重复的字符实现。每次遍历到的新字符,如果不在`str2`中,就将其添加到`str2`中。这样最后得到的`str2`就是过滤后的字符串。示例代码使用Java编写,通过`contains`方法检查字符是否已存在于`str2`。 2. 字符串压缩 第二题的`stringZip`函数要求对输入字符串`pInputStr`进行压缩,只针对连续重复的字符进行操作。压缩后的格式是“字符+重复次数”。处理方法是遍历输入字符串,当遇到连续重复的字符时,记录重复次数,然后在输出字符串中添加“次数+字符”。例如,字符串"xxxyyyyyyz"压缩后变为"3x6yz"。这里需要维护一个当前字符和计数器,以便追踪连续重复的情况。 这两道题目的解法都需要对字符串的基本操作有深入理解,包括字符数组的使用、字符串的遍历以及字符的比较。在实际编程中,还需要注意边界条件的处理,如空字符串或只包含一个字符的字符串等情况。同时,对于字符串压缩问题,还需要注意字符与数字的组合输出,可能涉及到字符串格式化的问题。在处理这类问题时,应确保算法的效率,避免不必要的字符串复制和遍历操作,以提高程序性能。