nextval
有的时候再学kmp算法的时候我们第一步就被next和nextval吓坏了,今天我来讲一下我求next和nextval的方法和技巧,如有错误也希望大家及时指正。
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
字符串 |
a |
b | a | a | c | d | a | a | a | a | b |
next | -1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
nextval | -1 | 0 | -1 | 1 | 1 | 0 | -1 | 1 | 1 | 1 | 0 |
next的求法:第一个a的next值默认为-1,第二个b的默认值为0,从第三个元素开始,找以第一个元素开始和与当前元素前一个字符结尾的最长串的长度。比如第三个元素a(也就是头上数字为2)的next为0,第四个元素的next为1,以此类推我们可以得到整个字符串的next值。写到这儿你可能会说,你的答案是错的,别着急,听我慢慢说说。
nextval的求法我们遵循一个原则,那就是同变不同不变。其中第一个元素的nextval值和他的next值一样为-1,第二个元素是b,他的next值为0,0对应的元素为a,不同,即不变,nextval为0,同理第三个元素为a,a的next为0,0下面的就是a,相同,即变!将第三个元素的nextval值和刚刚比较的那个元素的nextval值保持一致。以此类推。
得到的next值和nextval值如下:
next | -1 | 0 | 0 | 1 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
nextval | -1 | 0 | -1 | 1 | 1 | 0 | -1 | 1 | 1 | 1 | 0 |
正确结果与上表结果只差一步:
将表格中的数据在原来的基础上加1即可。
next | 0 | 1 | 1 | 2 | 2 | 1 | 1 | 2 | 2 | 2 | 2 |
nextval | 0 | 1 | 0 | 2 | 2 | 1 | 0 | 2 | 2 | 2 | 1 |
正确答案就到的啦
相关阅读
1.什么是sequence?其作用是什么? 在Oracle数据库中,什么是序列呢?其中的作用是什么呢?其实sequence是序列号生成器,可以为表中的行自
oracle序列参数:nextval和currval序列的两参数:nextval和currval。Nextval returns the next avaiable sequence value.It retu
例如: 序号 1 2 3 4 5 6 7 8 模式串 a b a a b c a c next值 0 1 1 2 2 3 1 2 next数组的求解方法是: 第一位的next值为0,第二位的n
KMP算法对模式串求解其Next值和Nextval值的计算方法 Next值的计算 方法一 方法二 Nextval值的计算 模式串S = “a