2023年考研資料結構 4 串

2021-10-13 07:16:55 字數 1247 閱讀 9879

從左到右乙個個匹配,如果這個過程中有某個字元不匹配,就跳回去,將模式串向右移動一位。這有什麼難的?

匹配不成功,i回溯到開始,j 回溯到子串的開頭

匹配不成功,i 往後走

時間複雜度o(m*n)

利用已經部分匹配這個有效資訊,保持i指標不回溯,通過修改j指標,讓模式串盡量地移動到有效的位置

時間複雜度o(m+n)

字首,字尾,部分匹配值

字串部分匹配值

字首字尾

a0 (空集 空集)

空集空集

ab0 ab

aba1

ab a

ba a

abab

2 a ab aba

b ab bab

ababa

3 a ab aba abab

a ba aba baba

ababc

0 a,ab,aba,abab

c,bc,abc,babc

sssss

4s,ss,sss,ssss

s,ss,sss,ssss

abca

1 a,ab,abc

a,ca,bca

next 陣列 (子串回溯的位置)

不移動主串的情況

匹配失敗,子串回溯

右移的數字 = 已經匹配的字元數-對應的部分匹配值 j=next[j]+1

**

int kmp(char str,char temp)//這個是查詢

else

// system("pause");

return 0;

}void getnext(char str)//next陣列的建立,這個是關鍵

else }}

int kmp(char str,char temp)//這個是查詢

else

} if (j==length2)

return -1;

}

資料結構 考研 驗證回文串

說明 回文串是乙個正讀和反讀都一樣的字串,我們將空字串定義為有效的回文串。示例 輸入 level 輸出 true。最基本的回文串問題,可以用雙指標分別由前往後檢索和由後往前檢索,如果最後相遇則是回文串。可以利用乙個棧來通過壓入前半段,來判斷後半段 或者全部壓入,再與字串從後往前比較。也可以利用遞迴的...

考研資料結構

一 考研中的變數型別 1 基本型別 int float char 2 指標型別 3 結構體型 陣列,結構體 4 void型 考研中 定義無返回值函式。二 控制語句 1 判斷語句if 做決策 2 迴圈語句 做重複的事 for while 講講break與continue break結束整個迴圈 con...

資料結構 4之 串

串的邏輯結構與線性表極為相似,區別僅在於串的資料物件約束為字符集。線性表操作物件大多是單個元素,而在串中一般都是以整體 字串 來作為操作物件 串的操作 實現和線性表很多不同。串的基本操作型別不同的高階語言可以有不同的定義方法。串賦值,串複製,比較,求長度,連線,求子串,串清除,串銷毀 定長順序儲存表...