笔记
给定一个模式串,求next[j]值
求解方法:
1.第一位的next值为0
2.第二位的next值为1
后面求解每一位的next值时,根据前一位进行比较
3.第三位的next值:看第二位的模式串为b,对应的next值为1,则将第二位的模式串b与j=1的模式串进行比较,不同,则没有相同的字符串,值为1。
4.第四位的next值:看第三位的模式串为c,对应的next值为1,则将第三位的模式串c与j=1的模式串进行比较,不同,则没有相同的字符串,值为1.
5.第五位的next值:看第四位的模式串为a,对应的next值为1,则将第四位的模式串a与j=1的模式串进行比较,相同,则第五位的next值为第四位加1,也就是2.
6.第六位的next值:看第五位的模式串为a,对应的next值为2,则将第五位的模式串a与j=2的模式串进行比较,不同。继续比较,j=2对应的next值为1,将第五位模式串的a再与j=1的模式串比较,相同,则第六位的next值为第二位的next值再加1,也就是2.
7.第七位的next值:看第六位的模式串为b,对应的next值为2,则将第六位的模式串b与j=2的模式串进行比较,相同,则第七位的next值为第六位的nxet值加1,也就是3.
8.第八位的next值:看第七位的模式串为b,对应的next值为3,则将第七位的模式串b与j=3的模式串进行比较,不同。继续比较,j=3对应的next值为1,则将第七位的模式与j=1的模式串进行比较,也不同,则没有相同的字符串,值为1.
9.第九位的next值:看第八位的模式串为c,对应的next值为1,则将第八位的模式串c与j=1的模式串进行比较,不同,则没有相同的字符串,值为1.
10.第10位的next值:看第九位的模式串为a,对应的next值为1,则将第九位的模式串a与j=1的模式串进行比较,相同,则第10位的next值为第九位的next值加1,也就是2.
11.第11位的next值:看第10位的模式串为b,对应的next值为2,则将第10位的模式串b与j=2的模式串进行比较,相同,则第11位的next值为第10位的next值加1,也就是3.
防止忘记,特记笔记。