看了华为校招的一道题目:去除重复的字符并排序,看了答案,不知道是人家写的 太好了,
还是怎么回事,发现在好难理解啊。但是代码又真的是好简单啊。
void solve(char *str , int len)
{
int i , hash[256];
memset(hash , 0 , sizeof(hash));
for(i = 0 ; i < len ; ++i)
{
if(0 == hash[str[i]])
hash[str[i]] = 1;
}
for(i = 0 ; i < 256 ; ++i)
{
if(0 != hash[i])
putchar(i);
}
printf("\n");
}
这个子程序,先用一个memset函数置数组全为0,然后第一个for循环是有字符的位置全部置1,第二个for循环是把hash数组里的为1的位置给打印出来。
这段代码的功能是即实现了去除重复字母也排序的作用。