我对 c 中的哈希表实现很新,我正在查看一些面试问题,我发现了一个关于查找数组中元素的奇数出现的问题。我已经完成了所有设置和工作:
int a[256]={0};
char *str="hhlloworldd";
int i;
for(i=0;i<strlen(str);++i)
a[str[i]]++;
for(i=0;i<strlen(str);i++)
{
if(a[str[i]]%2 == 1)
{
printf("Odd occurrence of %c\n",str[i]);
}
}
我见过的大多数哈希表解决方案(就数组或字符串等中的元素计数而言)都使用 2 个 for 循环。1 插入任何可能的内容,1 之后检查结果。我相信这仍然是 O(n) 复杂性,因为(如果我错了,请纠正我)但是它通过字符串的 n 次是 O(n) + O(n) 的两倍,这等于 O(n)。我的问题是有没有办法在插入哈希表时检查哈希表以消除第二个 for 循环?