串是特殊的線性表;她的所有元素都來自字符集且操作特殊。
串與線性表的區別與聯絡:
區別:串的操作是以整體為物件,而線性表是以個體為物件。
聯絡:包含於被包含的關係,畢竟串是特殊的線性表。
這裡來講一下串的模式匹配中的兩個演算法:
第乙個:bf演算法(窮舉,暴力)
顧名思義,就是子串和串挨個比較,如果有乙個不一樣,就從新開始在接著比較。
int bf(string t,string p,int pos)else
} if(j>=p.length())else
}
第二個,kmp演算法 :
在kmp演算法裡引進了乙個陣列next,來進行子串的回溯,而next是如何求取的呢;
next[j] = max
else
j = next[j];
}}這裡也是感謝乙個大佬的部落格,因為不太會加圖所以,用文本來敘述的話可能還是有些抽象,這裡附上乙個帶圖的解析qwq
可以點這裡哦qwq
整體kmp**
#include #include using namespace std;
void getnext(char t,int next)
int main()
; int sum = 0;
sum = index_kmp(s,t,0,next);
//cout << sum << endl;
/*get_next(t,next);
for(int i=0;i
cout << endl;
for(int i=1;i<=strlen(t);i++)*/
return 0;
}
資料結構 串
輸入乙個字串,按字典序列印出該字串中字元的所有排列。例如輸入字串abc,則列印出由字元a,b,c所能排列出來的所有字串abc,acb,bac,bca,cab和cba。結果請按字母順序輸出。我們求整個字串的排列,可以看成兩步 首先求所有可能出現在第乙個位置的字元,即把第乙個字元和後面所有的字元交換。第...
資料結構 串
串名 串值 串長 空串 空格串。字串的比較 字串模式匹配演算法 1.簡單字串模式匹配演算法 最簡單實現是用字串p的字元依次與字串t中的字元進行比較。實現思想是,首先將子串p從第0個字元起與主串t的第pos個字元起依次比較對應字元,如全部對應相等,則表明已找到匹配,成功終止。否則將子串p從第0個子串起...
資料結構 串
串 又稱字串 是一種特殊的線性表,它的每個結點僅由乙個字元組成。在早期的程式語言中,串僅在輸入或輸出中以直接量的形式出現,並不參與運算。隨著計算機的發展,串在文字編輯 詞法掃瞄 符號處理以及定理證明等許多領域得到越來越廣泛的應用。在高階語言中開始引入了串變數的概念,如同整型 實型變數一樣,串變數也可...