前言
首先抛出一个问题: 给定300w字符串A, 之后给定80w字符串B, 需要求出 B中的每一个字符串, 是否是A中某一个字符串的子串. 也就是拿到80w个bool值....我们的目的是, 找ear是否是A中四个字符串中的某一个的子串. 求出一个TRUE/FALSE.
那么我们首先求出A中所有的字符串德所有子串.放到一个数组里....比如只考虑apple的话, 排完序是这样子的.
apple
e
le
ple
pple
为什么要进行排序呢? 为了应用二分查找, 二分查找的效率是O(logN),极其优秀....接下来是使用待查找字符串进行二分查找的过程, 这里就不赘述了. 可以直接去代码里面一探究竟....需要强调的是, 这个”题目”是我在工作中真实碰到的, 使用暴力解法尝试之后, 由于效率太低, 在大佬指点下使用了SA. 30s解决问题.