I was curious about the cost of using the default, old fashioned strstr() function in C++. What is its Time and Space complexity? Which algorithm does it use?
We have other algorithms with below Worst Case Time and Space complexity :
Let n = length of string, m = length of pattern
- Knuth-Morris-Pratt Algorithm : Time = O(n+m), Space = O(m)
- Rabin-Karp Algorithm : Time = O(n*m), Space = O(p) (p = p patterns of combined length m)
- Boyer-Moore Algorithm : Time = O(n*m), Space = O(S) (S = size of character set)
In any way strstr() is better than above mentioned algorithms, in terms of Time and Space complexities?
Best Answer
In the C standard it just says, in §7.24.5.7:
So the complexity is unspecified. As far as I can tell, an implementation is allowed to use any of those algorithms.