给定 1000 个长度为 100 个字符的字符串。任务是计算每个字符串的最小子字符串的长度,它在 1000 个字符串生成的所有子字符串中是唯一的。
我的方法
为每个字符串生成长度为1-100的所有子字符串并将其存储在映射中,如果发现重复的子字符串,则继续增加计数。
重新生成从长度为 1 开始的每个字符串的所有子字符串,如果任何长度为 L 的子字符串的计数为 1,则输出 L。
观察
- 此解决方案在 C++ 中获取 TLE,并在 java 中传递。我对此的理解是,stl::map 操作在 log(N) 时间内完成,而 HashMap 操作在 O(1) 中完成。
问题
- 我正在考虑一个解决方案,实现我自己的哈希。我面临的问题是 1)选择,哈希数组大小的适当值 2)如何从给定的字符串生成哈希,这样可以避免冲突最多。
上述问题的任何其他最佳方法都是可观的。