华为编程测验:删除子字符串函数实现

5星 · 超过95%的资源 需积分: 50 52 下载量 198 浏览量 更新于2024-09-17 收藏 22KB TXT 举报
"华为机试题目与答案,主要涉及字符串处理和C语言编程技术,用于华为校园招聘软件类编程测试。题目要求实现一个函数`delete_sub_str`,用于删除源字符串`str`中的子字符串`sub_str`,并把结果保存在`result_str`中。" 华为校园招聘软件类编程测验题主要考察的是程序员对于字符串处理和基本的算法设计能力。题目中给出的`delete_sub_str`函数是解决这一问题的关键。这个函数接收三个参数:原始字符串`str`,要删除的子字符串`sub_str`,以及结果字符串`result_str`。它的任务是在`str`中找到所有出现的`sub_str`,然后将其从`str`中移除,并将处理后的字符串存储到`result_str`中。 代码的主体部分是一个for循环,遍历输入字符串`str`的每个字符。在循环内部,使用了一个while循环来比较当前字符是否与子字符串`sub_str`的对应字符相同。如果匹配,会继续向后比较,直到子字符串结束或主字符串结束。若子字符串未完整匹配,将跳回到主字符串的初始位置(由`tem`变量保存),并将当前字符添加到结果字符串`result_str`中。如果子字符串完整匹配,那么`count`变量会增加,表示找到了一个匹配的子字符串,并且不会将已匹配的子字符串添加到结果字符串中。 在`main`函数中,给出了一个测试用例,源字符串`str`为"12fuck345fuck678fuck9",要删除的子字符串`sub`为"fuck",结果字符串`res`预先初始化为空。通过调用`delete_sub_str`函数,计算出删除子字符串后的结果,并将计数值`count`返回。 这个题目涉及的编程知识点包括: 1. C语言的基本语法,如字符串操作、指针和循环。 2. 字符串匹配和查找算法,这里的实现是简单的逐字符比较。 3. 函数的设计和调用,理解参数传递和返回值的逻辑。 4. 编程中的错误处理,虽然题目没有明确要求,但在实际应用中,可能需要考虑边界条件和异常情况,如空字符串、子字符串超出自定义的长度等。 解题思路和代码实现是解决问题的关键,同时对算法效率的优化也是面试中可能会被关注的部分。在实际编程中,可以考虑使用更高效的字符串处理方法,如KMP算法,来提高字符串匹配的效率。