我有2套字符串,A和B.
我想解决的问题是计算集合B中的多少个字符串包含集合A中的任何单个字符串,例如:
答:" a"," b"
B:" abc"," dsf"," aqc"," yyy"," xxx",&#34 ; BBB"
结果是3(" abc"," aqc"," bbb")
不幸的是,在我的情况下,设置A和设置B非常大,比如说,设置A有数百万个字符串,设置B有数十亿个字符串。因此,我必须在Java语言中采用数百万亿的“操作索引”。复杂度的算法是O(m * n)。
我可以使用任何优化算法来加快速度吗?
答案 0 :(得分:1)
可能是数据库搜索和喝咖啡休息时间。
但是,让我们看看。
使用字母组:
使用搜索模式(A中的术语字母树):
此外,使用Java 8及其并行流,以A为块1000,从B为1000。