Is it possible to get the length of biggest substring which is palindrome on a string on O(n)??
# | User | Rating |
---|---|---|
1 | tourist | 4009 |
2 | jiangly | 3823 |
3 | Benq | 3738 |
4 | Radewoosh | 3633 |
5 | jqdai0815 | 3620 |
6 | orzdevinwang | 3529 |
7 | ecnerwala | 3446 |
8 | Um_nik | 3396 |
9 | ksun48 | 3390 |
10 | gamegame | 3386 |
# | User | Contrib. |
---|---|---|
1 | cry | 167 |
2 | maomao90 | 163 |
2 | Um_nik | 163 |
4 | atcoder_official | 161 |
5 | adamant | 159 |
6 | -is-this-fft- | 158 |
7 | awoo | 157 |
8 | TheScrasse | 154 |
9 | nor | 153 |
9 | Dominater069 | 153 |
Is it possible to get the length of biggest substring which is palindrome on a string on O(n)??
Name |
---|
There are two ways that I know of to solve this.
Use Manacher's Algorithm
Use Palindromic Tree
Hashes + 2 pointers
Can you explain how this will work?
We can use the idea similar to 2 pointers instead of binary search.
It will be O(N)
We will visit all centers, it's O(n). In every position we will try to update answer. All updates will work summary O(ans) = O(n), so algorithm's complexity is O(n).
I only know O(n log n) solution with hashes using binary search, how can it be done in O(n)?
If we change
for (int len = 0; len <= max_possible; i++)
in naive O(N^2) solution to
for (int len = ans; len <= max_possible; i++)
it will improove complexity to O(N)