Hash 采访:如何高效地搜索字符串中第一个出现的字符?

Hash 采访:如何高效地搜索字符串中第一个出现的字符?,hash,Hash,我的一位面试官问我如何高效地搜索字符串中第一个出现的字符 我说使用散列,但他想要一种高效的内存处理方法。排序字符串并执行二进制搜索是不可能的,因为索引将丢失 面试官似乎对我的回答不满意。还有什么我可以说的吗?为什么不用指针搜索第一次出现的事件呢。这是最有效的查找方法(只需要4或8字节的数据) 计算科学的基本定律:您可以优化空间,也可以优化运行时间 软件工程的基本定律:听“计算机科学家”的话,找到最合适的中间点。由于唯一字符的数量通常很小,因此一本包含唯一字符作为键、其第一个位置作为值的字典似乎可

我的一位面试官问我如何高效地搜索字符串中第一个出现的字符

我说使用散列,但他想要一种高效的内存处理方法。排序字符串并执行二进制搜索是不可能的,因为索引将丢失


面试官似乎对我的回答不满意。还有什么我可以说的吗?

为什么不用指针搜索第一次出现的事件呢。这是最有效的查找方法(只需要4或8字节的数据)

计算科学的基本定律:您可以优化空间,也可以优化运行时间


软件工程的基本定律:听“计算机科学家”的话,找到最合适的中间点。

由于唯一字符的数量通常很小,因此一本包含唯一字符作为键、其第一个位置作为值的字典似乎可以节省内存。不过,答案取决于未说明的要求。如果只需要查找一次字符的第一个匹配项,那么线性搜索字符串将是最有效的。
unsigned long findIndex(char ch){
  char *str = "some really long; string; here";
  char *ptr = str;
  while(*ptr != ch || *ptr != '\0'){
     ptr++;
  }
  return (unsigned long)(ptr - str)
}