字串查詢 3 使用一維陣列儲存回退位置

2022-09-24 03:15:15 字數 656 閱讀 8009

int strstr(string &haystack, string &needle)

vectornext(needlesize, 0);

for (int i = 1, j = 0; i < needlesize; i++)

if (needle[j] == needle[i])

next[i] = j;

}const int targetsise;

for (int i = 0, j = 0; i < targetsise; i++)

if (haystack[i] == needle[j])

if (j == needlesize)

}return -1;

}

一種優化過的kmp查詢字串演算法

相對字串查詢(2)中的演算法,只需要生成更小的儲存空間o(m)

此處m表示模式字串的長度

並且需要的next陣列空間小,所以在生成匹配陣列時,速度會更快

但是查詢字串時,相對字串查詢(2)的演算法,它的最差時間複雜度為o(mn),其實比較差的。但是在實際表現中,每次需要查詢不同的字串都要重新生成匹配字串,並且它通常只需要更少的記憶體,實際表現反而優於字串查詢(2)中的kmp查詢演算法

二維陣列 字元陣列與字串

要求 了解多維陣列的概念 掌握二維陣列的使用 掌握用字元陣列存放字串的方法 掌握字串的輸入及輸出方法 二維陣列的定義 例 int a 2 3 定義乙個二維陣列 該陣列有2行3列共6個元素 這6個元素都存放int型資料 儲存時先儲存第一行的3個元素,然後再儲存第二行的3個元素 可將此二維陣列看成是乙個...

二維陣列,字串,多維陣列

二維陣列 有2個下標的陣列成為二維陣列 定義 型別 陣列名 常量表示式1 常量表示式2 注意事項,二維陣列定義時,可以不指定第一維的長度,但必須給定第二維.例 int 3 字元陣列 用於存放字元變數的陣列成為字元陣列.字元陣列屬於一維陣列,元素型別char 例 char c 20 字元陣列串 存放字...

普通一維陣列 二維陣列 字串及其指標型別

一 陣列 陣列前提知識 1 定義陣列時,若未賦值,則自動賦0 2 陣列儲存在連續的儲存空間 3 當a i 中 i len a 1時,程式可能不會報錯 4 訪問 a i a為指標常量,不可改變 5 a的位址為a 0 的位址,a i a i a i a i 定義 一維 數值型別 變數名 陣列長度 數值型...