算法步骤
下面进入更新P[]的步骤:
第一步,先初始化P[0]=0。
第二步,当i<strlen(str)时执行第三步,否则结束
第三步,判断P[id]+id=mx>i的值,如果为假执行第四步。否则执行第五步。
第四步,初始化P[i]=0,并且执行while(str[i+P[i]+1] == str[i-P[i]-1]) ++P[i];i++,得到所求的P[i]。
第五步,如果mx-i>P[j],则执行第六步,否则执行第七步。
第六步,P[i]=P[j],这时已经求出P[i],回到第二步。
第七步,这时P[i]>=mx-i,初始化P[i]=mx-i,并执行while(str[i+P[i]+1] == str[i-P[i]-1]) ++P[i];i++,得到所求的P[i],回到第二步。