开发者社区 问答 正文

KMP算法next数组的计算

已知0-1字符串:01101110011,试求next[7]的值。

展开
收起
知与谁同 2018-07-17 15:36:06 1706 分享 版权
2 条回答
写回答
取消 提交回答
  • 这个时候,玄酱是不是应该说点什么...
    字符串如果是以0为下标的话next[7]是0,只有最后一位与第一位相等
    2019-07-17 22:55:55
    赞同 展开评论
  • 云栖社区聚能聊、问答管理员~发福利、搞怪,八卦我来,论技术、发话题、写博客你上!
    next[i]表示的是:
    在第i个字符前面的i-1个字符里面,
    从开头开始的1个字符与最后1个字符是否相等,若不是,则next[i]=0,否则继续看下面;
    从开头开始的2个字符与最后2个字符是否相等,若不是,则next[i]=1,否则继续看下面;
    从开头开始的3个字符与最后3个字符是否相等,若不是,则next[i]=2,否则继续看下面;
    ……
    就是这样的判断取值。
    它的意思就是如果到了某个字符不匹配的情况时候,你就可以直接把模式串拖到从开头开始的那next[i]个字符等于当前字符的前next[i]个字符的地方,这样就少了很多重复的无效的比较和移动。
    2019-07-17 22:55:55
    赞同 展开评论