I have a large arrray of strings that looks something like this: String temp[] = new String[200000].
I have another String, let\'s call it bigtext. What I ne
Note that your current complexity is O(|S1|*n)
, where |S1|
is the length of bigtext
and n
is the number of elements in your array, since each search is actually O(|S1|)
.
By building a suffix tree from bigtext
, and iterating on elements in the array, you could bring this complexity down to O(|S1| + |S2|*n)
, where |S2|
is the length of the longest string in the array. Assuming |S2| << |S1|
, it could be much faster!
Building a suffix tree is O(|S1|)
, and each search is O(|S2|)
. You don't have to go through bigtext
to find it, just on the relevant piece of the suffix tree. Since it is done n
times, you get total of O(|S1| + n*|S2|)
, which is asymptotically better then the naive implementation.