next数组
- next数组–最长前缀后缀匹配长度,前缀不包含最后一个,后缀不包含第一个。如下为next数组示意
索引 | 0 | 1 | 2 | 3 | 4 | 5 |
---|
字符串 | a | b | a | b | c | c |
next 数组 | -1 | 0 | 0 | 1 | 2 | 0 |
int cn = 0, pos =2;
while(pos< str.size()){
if(str[pos-1]==str[cn]){
next[pos++] = ++cn;
}else if (cn > 0) {
cn= next[cn];
}else{
next[pos++] = 0;
}
}
kmp主流程