我正在用C ++语言处理哈希表,我需要一个字符串数据的哈希函数。我尝试过的一个哈希函数是添加ascii代码并使用modulo(%100)。
我的实际要求是找到与给定模式完全匹配或开始的单词。
Ex:鉴于模式是" comp"。然后我想得到所有以comp开头的单词。 (例如:公司,计算机,comp等)我可以使用散列来执行此操作,因为尝试过的散列函数只能找到完全匹配。 所以任何人都可以建议我适合这个要求的哈希函数。
答案 0 :(得分:1)
使用trie可以更好地处理匹配的前缀。
基本上这是一个树结构,它在每个节点上保存一个字符。连接从根到给定节点的路径中不同节点的字符将生成该节点的密钥。
搜索是将搜索到的密钥的每个字符与子节点进行比较的下降问题。一旦消耗了所有字符,剩下的子树就是所有用作搜索密钥前缀的密钥。
答案 1 :(得分:0)
听起来你真正需要的是词典排序。您可以通过使用排序数据结构(如std集或映射)或使用vector和std :: sort算法来实现。请注意,C ++排序比标准C qsort快。