马拉车算法相关的博客很多,笔者就不多赘述,感兴趣的可以看看这篇,笔者是观看这篇博客进行学习的。马拉车算法详解, C++代码实现_c++马拉车-CSDN博客
这篇博客主要是想记录几个当时没想通后来解决了的问题。
第一个,这篇博客提到了i在pos和right之间的情况,以及i大于right的情况,笔者的疑惑是,pos和left之间的情况呢?不需要考虑吗?后来想通了扇了自己一巴掌。i的遍历是递增的,pos的值都是之前遍历过的i值中的一个,i不可能小于pos,我是个傻x。
第二个,就是2*pos-i这个位置回文串的左边界小于left,那i的dp值为什么是right-i,为什么不能继续扩张呢,想通了才发现,要是能扩张,那right值咋可能是现在的值,肯定更大了啊,因为left左边和right右边有相等的(i和2*pos-i之间的对称性)。
小小的一点理解偏差以及解释,希望能对大家有帮助。