字符串的操作有许多,其中定位子字符串在主串中的起始位置,是常用操作。而KMP则是此操作的常用优化算法
上述图示为算法思想,适合人工计算,但电脑的效率较低,以下贴出代码:
//求next数组,T为主串 void getNext(String T,int[] next){ int i = 1,j = 0; next[1] = 0; while(i < T.length()){ if(j== 0 || T.ch[i] == T.ch[j]){ ++i;++j;next[i] = j; } else j = next[j] return; }
计算机的研究之趣,不限于代码一隅