C语言实现:删除字符串重复字符及从第一个字符串移除第二个字符串中的字符

需积分: 49 26 下载量 49 浏览量 更新于2024-09-11 1 收藏 1KB TXT 举报
"该代码示例展示了如何在C语言中实现两个字符串操作:删除第一个字符串中在第二个字符串中出现的字符以及去除一个字符串中的重复字符。这两个功能都在VS2013环境下进行了验证。" 在给定的代码中,有两个函数`Del2In1`和`DelRepeat`,分别用于执行不同的字符串处理任务。 1. `Del2In1(char* str1, const char* str2)` 函数: 这个函数的目的是从`str1`中移除所有在`str2`中出现的字符。它首先检查`str1`和`str2`是否为空,如果任一指针为NULL,则直接返回。接着,它创建了一个大小为256的哈希表(`hashtable`),用来记录`str2`中每个字符出现的次数。然后遍历`str2`,将对应的哈希表值置1。之后,从后向前遍历`str1`,如果当前字符在哈希表中对应值大于0,说明该字符在`str2`中出现过,于是将该字符及其后的字符前移一位,相当于删除了该字符。最后,更新哈希表并打印结果。 2. `DelRepeat(char* str)` 函数: 这个函数的目标是删除`str`中的所有重复字符。同样,函数首先检查`str`是否为空,然后初始化一个256大小的哈希表,并用零填充。接下来,遍历`str`,统计每个字符出现的次数。这次是从后向前遍历,如果发现某个字符在哈希表中出现次数超过1次(非空字符),则将该字符及其后的字符前移一位,以达到删除重复字符的效果。最后,更新哈希表并打印结果。 在`main`函数中,创建了三个字符串`str1`, `str2`, 和 `str`,分别用于测试这两个功能。首先调用`Del2In1`函数处理`str1`,然后调用`DelRepeat`处理`str`,并将结果输出到控制台。 这两个函数都利用了哈希表来提高查找效率,减少了遍历次数。`Del2In1`函数采用的是从后向前的删除方式,避免了因删除导致的元素移动,而`DelRepeat`函数则是通过前向遍历统计和后向遍历删除的结合,实现了重复字符的删除。