1.如果不用最長的,則會丟失可匹配部分,也就是本來可能匹配的,結果卻不能匹配。
2.因為需要保證比較位置之前的字符串都一致了,如果不用公共前后綴,則可能導致比較位置之前的字符串不一致。
理由其實很簡單,因為把前綴移到后綴的位置,而比較指針不變,如果后綴(這時已經不是真正的后綴了)的結束不是貼着比較指針的話,就
不能保證比較指針前的字符和待比較串一致。
選擇公共前綴是必定的,因為如果想要在待比較串中找出模式串,那么一定要和模式串的開頭匹配,也就是和前綴匹配。
但是選擇的不是公共后綴的話,也就是結尾不貼近比較指針的話,就會導致上面的問題。
3.就算使用最長串,是否還是會有遺漏的情況存在呢?
那么我們可以假設使用最長串,看看有沒有遺漏的情況發生。
假如在過程中發生了匹配。所謂的匹配是指在比較指針之前要和待比較串完全匹配,如果不完全匹配就沒有意義,下圖的紅色框和長的綠色框是假設的匹配情況。
但是根據我們 公共前后綴的定義,應該出現如下的最長公共前后綴,所以這種匹配如果存在,只能說明我們之前找的不是最長公共前后綴,比公共前后綴短。
但是當前情況下,並不成立,因為兩者根本不相等。如果是相等的話,就會如上所言,之前找到的不是最長前后綴。