我有数百个键,例如:
- 红苹果
- 人事
- 孔子
- 蓝苹果
我有与这些键相关的数据,数据是一个字符串,最后有相关的键。
- 红苹果:树有红苹果
- maninred:她看到了maninred
- foraman: 他们买了现在的foraman
- 蓝苹果:令人惊讶,但它是蓝苹果
我希望使用哈希表和哈希函数根据键记录数据,并且我希望能够从表中检索数据。
我知道使用哈希函数和哈希表,这里没有问题。
但;
我应该给程序一个字符串,它作为子字符串发生并检索匹配键的数据。
例如:
我必须给“红色”并且必须能够得到
- 红苹果:树有红苹果
- maninred:她看到了maninred
作为输出。
或者
我必须给“苹果”并且必须能够得到
- 红苹果:树有红苹果
- 蓝苹果:令人惊讶,但它是蓝苹果
作为输出。
如果它们具有匹配的子字符串,我只能考虑搜索所有键,还有其他解决方案吗?如果我搜索每个查询的所有关键字符串,则不需要使用散列,没有意义,是吗?
但是,搜索子字符串的所有键是 O(N),我希望用 O(1) 解决问题。
通过散列,我可以将密钥(例如“redapple”)散列到例如943,并将“maninred”散列到例如332。
并且查询人给出字符串“red”我如何从943和332中找出键具有“red”子字符串?这超出了我的cs思维能力。
感谢您的任何建议,想法。