kmp的nextval
时间: 2023-10-13 13:05:14 浏览: 109
kmp算法源码
在KMP算法中,nextval数组是用来优化匹配过程的。它的求解步骤如下:
1. 首先求出next数组的值,其中next=0,next=1。
2. 然后定义nextval[1]=0。
3. 对于模式串的每个字符T[j](j>1),比较它与第next[j]个字符T[next[j]]是否相等。
- 若相等,则将模式串的第j个字符的nextval值设为第next[j]个字符的nextval值,即nextval[j]=nextval[next[j]]。
- 若不相等,则将模式串的第j个字符的nextval值设为其对应的next值,即nextval[j]=next[j]。
需要注意的是,这里的模式串下标是从1开始计数。如果想要以0开始计数,可以将nextval=-1,nextval=0。
对于输出以"-1 0 "开头的nextval数组值,可以使用cout<<nextval[i]<<" "来输出。若想输出以"0 1"开头的nextval数组值,可以修改为cout<<nextval[i]<< " 1"。
希望这些信息对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [KMP算法 → 计算nextval数组](https://blog.csdn.net/hnjzsyjyj/article/details/127105603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
- *3* [KMP算法的Next及NextVal序列求解](https://download.csdn.net/download/a471801687/7829913)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文