您的位置:首页 > 其它

在字符串中删除特定的字符

2011-02-24 15:17 323 查看
题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。

分析此题的文章很多(能够讲解清楚是种能力),给出参考性代码,用代码说话

#include <stdio.h>
#include <memory.h>
/***********************************************************************************
36
输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。
例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。
***********************************************************************************/
int delchar(char *src, char *dst);
int main()
{
char src[] = "They are students.";
char del[] = "aeiou";
delchar(src, del);
printf("Output : %s\n",src);
return 0;
}

int delchar(char *src, char *dst)
{
char *begin = src;
char *end   = src;
char hashtable[256];
int i = 0;
memset(hashtable,0,sizeof(hashtable));
while(*dst)
++hashtable[*dst++];
while(*end)
{
if(!hashtable[*end])//del character not detected
{
*begin = *end ;
++begin;
}
++end;

}

*begin= '\0';
}


此段代码有两点注意

1.用到了hash的思想来映射字符串。

2.两个临时指针恰到好处,边遍历边覆盖(即删除操作)

参考文章

每天一道算法题12 在字符串中删除特定的字符

从字符串中删除指定字符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: