Algorithm 好后缀移位表

Algorithm 好后缀移位表,algorithm,shift,Algorithm,Shift,如何计算针的良好后缀移位? 我似乎无法理解下面的答案。。 这根针是skjeskj的 goodshift[0] : !j 1 goodshift[1] : !kj 7 goodshift[2] : !skj 7 goodshift[3] : !eskj 4 goodshift[4] : !jeskj 4 goodshift[5] : !kjeskj 4 goodshift[6] : !skje

如何计算针的良好后缀移位? 我似乎无法理解下面的答案。。 这根针是skjeskj的

 goodshift[0] :        !j    1
 goodshift[1] :       !kj    7
 goodshift[2] :      !skj    7
 goodshift[3] :     !eskj    4
 goodshift[4] :    !jeskj    4
 goodshift[5] :   !kjeskj    4
 goodshift[6] :  !skjeskj    4
有人能解释一下吗


编辑:否决票?真的吗??真的吗???

第一个字符总是1!注意

skjeskj(长度=7)

j=跳跃1

(k) j=7!我们在这里检查,字符串中没有k的j是吗?不,然后我们跳7。(针的长度)

(s) kj=7!我们在这里检查,kj在字符串中没有s吗?不,然后我们跳7

(e) skj=4!我们在这里检查,skj在字符串中没有e吗?是的,然后我们从右到左计数。j(1),k(2),s(3),e(4)。我们找到了不带e的子串skj

(j) eskj=4!相同的过程,但是这里的字符串以skj开头,而包含skj的所有子字符串都必须跳转4个索引

(k) jeskj=4!同样的过程

(s) kjeskj=4!同样的过程


希望能有所帮助

你应该澄清你的问题。什么是“好后缀移位”?什么是针?你从哪里得到问题的“答案”——有没有可能是错误的?@John NG,在理解好后缀移位表时也有同样的困难。(INF2220)如果你能弄明白,请告诉我!我终于明白了。你有什么办法来理解这个吗?谢谢你的解释!然而,有几件事我很好奇。当我们提出“X在字符串中没有STR”的问题时?我不知道你是怎么决定的。我知道kj在字符串中不是没有's',因为我们有“SKJeSKJ”,所以“kj”总是在s之前。但是对于“eskj'在字符串中没有j吗?”我不明白为什么答案是肯定的。我们唯一一次在字符串中有“eskj”,它前面有J。非常感谢您的澄清。我想您误解了我的意思,您必须始终检查子字符串,而不检查子字符串的第一个字符。Exp(e)skj,这里你必须检查针中没有e的skj,这里没有e的skj在字符串中。