KMP的一點心得

2021-06-27 09:08:38 字數 516 閱讀 7608

int next      //next陣列儲存的是當模式串匹配不上的時候將要跳轉的下標

void getnext(char b)

}int kmp(char a,char b)//尋找主串中有多少模式串

}return k;

}int kmp(char a,char b)//判斷主串中是否有模式串

return 0;

}字串a代表的是主串 b代表的是模式串;

思路:先對next[0]賦值-1;

每次對下乙個進行操作的時候先對next進行賦值 --> next[i]=j;

然後當兩個字元匹配不上的時候 利用遞迴的思想去next陣列裡面尋求將要跳轉的下標 --> j=next[j];

先進行賦值 再進行比較的操作,

只有當j==-1 或者兩個字元相等的時候才會跳出迴圈,所以每次跳出的時候將j++,如果跳出的時候滿足j==-1

那麼j++可以將j重新賦值為0.如果相等的情況下跳出 那麼對於兩個字串都要比較下乙個字元--->i++,j++;

KMP演算法的一點心得

kmp演算法最重要的就是得到 next 陣列,以 next j k 為例,在kmp演算法裡next陣列的意思是下標為 j 的字元失配時模式串要後移到k的位置重新開始比較,在求 next 陣列的過程中,我們也可以理解為是前 j 個字元中字首和字尾的相等的最大長度。void get next strin...

SQL一點心得

sql語句將所有 stock 表裡的 縮寫 led甲 替換改寫成 led刷 update dbo stock set 縮寫 replace 縮寫 led甲 led刷 where 縮寫 like led甲 go字首 update mytable set myfield replace myfield,...

Cell myCell一點心得

ctor initializer形如 cell cell mvalue 0 mstring ctor initializer,能在建立資料成員的同時賦初值 1.const方法的工作原理是將方法內用到的資料成員都標記為const引用。因此試圖修改資料成員時,編譯器報錯。2.用explicit關鍵字標記...