串
一.定義
子串 主串 空格串≠空串 Φ
堆式順序儲存結構
二. 匹配:
1.庫函數 strstr (C++/C
返回字串頭指針 /null (一個一個向前挪地比較
T = O(n*m) 最壞情況 最后一個字符不同
2.改進-----從末尾開始比
幸運:T = O(n) T = O(n*m) 最壞情況 第一個字符不同
3.KMP算法
T = O(n)
找到相同子串
三. 數組
三維數組


LOC(a47)=LOC(a00)+(j*m+i)*L=SA+(7*8+4)*3=SA+180
13、設主串 T = abaabaabcabaabc,模式串 S = abaabc,采用 KMP 算法進行模式匹配,到匹配成功時為止,在匹配過程中進行的單個字符間的比較次數是:(B)
A. 9
B. 10
C. 12
D. 15
解析:
求next數組,next={-1,0,0,1,1,2};
開始匹配
abaabaabcabaabc
abaabc
當比較到s[5]時,不成功,比較6次;
abaabaabcabaabc
-----abaabc
根據next[5]=2,移動S到S[2]處,從S[2]處開始比較,比較4次,成功;
一共比較10次
(原文鏈接:https://blog.csdn.net/weixin_43751983/article/details/103370761)
五. 實踐小結
pta求交集那題 1 先順序再求交集
2 位圖法 (最后沒過的那個測試點是各有100000個數 那我一開始記錄的數組就要大一點了
位圖法就是bitmap的縮寫,所謂bitmap,就是用每一位來存放某種狀態,適用於大規模數據,但數據狀態又不是很多的情況。通常是用來判斷某個數據存不存在的。---百度解釋
位圖法應用
使用位圖法判斷整形數組是否重復
使用位圖法進行整形數組排序
圖源 https://blog.csdn.net/yangquanhui1991/article/details/52172340