Update Manacher算法.md

This commit is contained in:
hao14293
2019-06-29 10:06:30 +08:00
committed by GitHub
parent 9a09fa98ae
commit e7a1ab017c

View File

@@ -17,10 +17,10 @@
| i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: |
| s_new[i] | $ | # | a | # | b | # | b | # | a | # | h | # | o | # | p | # | x | # | p | # | o | # |
| p[i] | | 1 | 2 | 1 | 2 | 5 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 6 | 1 | 4 | 1 | 2 | 1 |
i | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21
:-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-: | :-:
s_new[i] | $ | # | a | # | b | # | b | # | a | # | h | # | o | # | p | # | x | # | p | # | o | #
p[i] | | 1 | 2 | 1 | 2 | 5 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 2 | 1 | 6 | 1 | 4 | 1 | 2 | 1
可以看出, <code> p[i] - 1 </code> 正好是源字符串最长回文串的长度。
@@ -116,11 +116,11 @@ int main(){
![3.png](https://i.loli.net/2019/06/29/5d16c31de3b2a27940.png)
根据代码,此时 <code>p[i] = p[j]</code>, 那么 ,code>p[i]</code>还可以更大么?答案亦是不可能!见下图:
根据代码,此时 <code>p[i] = p[j]</code>, 那么 ,<code>p[i]</code>还可以更大么?答案亦是不可能!见下图:
![4.png](https://i.loli.net/2019/06/29/5d16c31dc990f40806.png)
假设右侧新增的红色部分是<code>p[i]</code>可以增加的部分那么根据回文的性质a等于b也就是说j的回文应该再加上a和b矛盾所以假设不成立故<code.p[i] = p[j]</code>,也不可以再增加一分。
假设右侧新增的红色部分是<code>p[i]</code>可以增加的部分那么根据回文的性质a等于b也就是说j的回文应该再加上a和b矛盾所以假设不成立故<code>p[i] = p[j]</code>,也不可以再增加一分。
* 3j回文串左端正好与 id 的回文串左端重合,见下图: