mirror of
https://github.com/hao14293/2021-Postgraduate-408.git
synced 2026-02-02 18:20:30 +08:00
Update Manacher算法.md
This commit is contained in:
@@ -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(){
|
||||
|
||||

|
||||
|
||||
根据代码,此时 <code>p[i] = p[j]</code>, 那么 ,code>p[i]</code>还可以更大么?答案亦是不可能!见下图:
|
||||
根据代码,此时 <code>p[i] = p[j]</code>, 那么 ,<code>p[i]</code>还可以更大么?答案亦是不可能!见下图:
|
||||
|
||||

|
||||
|
||||
假设右侧新增的红色部分是<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>,也不可以再增加一分。
|
||||
|
||||
* (3):j回文串左端正好与 id 的回文串左端重合,见下图:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user