字符串 hash 问题,有 <N 个字符串长度任意,放入到长度为 N 的数组,后续还需要根据这 N 个字符串快速得到位置,怎么样最快呢?

2022-07-12 21:38:31 +08:00
 microxiaoxiao

有经验的大佬来指教一下

890 次点击
所在节点    程序员
3 条回复
amlee
2022-07-12 21:43:29 +08:00
hashmap , key 存字符串 hash ,value 存数组 index
CEBBCAT
2022-07-12 23:59:35 +08:00
重新描述一下根本问题呗?
vvtf
2022-07-13 10:23:27 +08:00
**后续还需要根据这 N 个字符串快速得到位置**
这句话看不懂, 找到位置有啥意义? 位置放的也是字符串....
不过你的字面需求可以用一下代码试试:

int index = 0;
map<string, int> map;
string[] arr;
for ( str : strings) {
string key = md5(str);
int val = map.putIfAbsent(key, index);
if (null != val) {
continue;
}
arr[index ++] = str;
}


// get index by string
return map.get(md5(str));

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/865764

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX