删除字符串中所有重复出现的字符
2013-06-18 22:21
357 查看
#include <stdio.h> void delete_char(char *a) { if(a==NULL) return; char hash_table[256] = {0}; char *p = a; while(*p != '\0') hash_table[*p++]=1;//注意这里,设为1标识这个字符出现过一次,为后面删除重复字符做准备 char *fast = a; char *slow = a; while(*fast != '\0') { if(hash_table[*fast] == 0)//如果这个字符出现过,会将原来的1值变为0,所以代表这个字符曾经出现过,不能够赋值给*slow { fast++; } else { hash_table[*fast]--;//如果第一次出现,则可直接赋值给*slow,并把1变为0 *slow++ = *fast++; } } *slow = '\0'; } int main() { char a[] = "google!!!!!"; printf("%s删除重复出现的字符后为:\n",a); delete_char(a); printf("%s\n",a); return 0; }
相关文章推荐
- 定义一个字符串类DelSameStr,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个。例如,若字符串为”cocoon”,删除重复出现的字符后,其结果是字符串”con”
- 剑指offer 面试题35扩展:删除字符串中所有重复出现的字符 (C++版)
- C++实现删除字符串中所有重复出现的字符
- [算法] 定义一个函数,删除字符串中所有重复出现的字符。
- sqlserver分隔字符串,查找父类下所有子类,删除重复字符串,计算一字符串在别一字符中出现的次数
- 剑指Offer----面试题35:扩展----删除字符串中所有重复出现的字符 & 变位词
- 删除字符串中重复出现的字符
- HWOJ 删除字符串中重复出现的字符
- 剑指Offer:从第一个字符串中删除第二个字符串中出现过的所有字符
- 在第一个字符串中删除在第二个字符串中出现的所有字符
- 剑指Offer----面试题35:扩展----第一个字符串中删除第二个字符串中出现过的所有字符
- 输入两个字符串,从第一个字符串中删除第二个字符串中出现过的所有字符
- 给定一个只包含小写字母的字符串,删除重复的字母,每个字母只出现一次。在所有结果中,输出字典顺序最小的。
- 从第一个字符串中删除第二个字符串中出现的所有字符
- 从第一个字符串中删除第二个字符串中出现的所有字符
- sql 语句 写一个函数T-sql函数elimination(a,b)将出现在第一个字符串中的第二个字符串中的所有字符删除,即:select dbo.elimination('abcdefg123
- 哈希表对字符串的高效处理2:在一个字符中删除第二个字符出现过的所有字符
- 从第一个字符串中删除在第二个字符串中出现过的所有字符
- 定义一个字符串类DelSameStr,从左到右对字符串中每个字符删除其后所有相同的字符,只留下第一次出现的那一个
- 删除一个字符串中重复出现的字符