日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

五.串

發布時間:2024/9/30 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 五.串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

串(string)是由零個或者多個字符組成的有限序列,又名叫字符串.

串中的字符數目稱為串的長度
零個字符的串稱為空串

串的比較是通過組成串的字符之間的編碼來進行的,而字符的編碼指的是字符在對應字符集中的序號
ASCII碼由8位二進制數表示一個字符

串的順序存儲結構
用一組地址連續的存儲單元來存儲串中的字符序列的(定長數組來定義)

計算機中存在一個自由存儲區,叫做”堆”

串的鏈式存儲結構,和線性表相似,一個結點可以存儲一個字符,也可以存儲多個字符

樸素的模式匹配算法
從頭到尾,逐個進行字符之間的對比,時間復雜度為O{(n-m+1)*m}

KMP模式匹配算法
避免重復遍歷,時間復雜度O(n+m)

/*通過計算返回子串T的next數組*/ void get_next(String T,int *next) {int i,j;i=1;j=0;next[1] = 0;while(i<T[0]){if(j==0 || T[i] == T[j]){/* T[i]表示后綴的單個字符 */++i; /* T[j]表示前綴的單個字符 */++j;next[i] = j;}else{j=next[j]; /*若字符相同,則j值回溯*/}} }int Index_KMP(String S,String T,int pos) {int i=pos;// i用于主串S當前位置下標值,若pos不為1,則從pos位置開始匹配int j=1; //j用于子串T中當前位置的下標值int next[255]; //定義一個next數組get_next(T,next); //對串T進行分析,得到next數組while(i<=S[0] && j<=T[0]) //如果i小于S的長度且j小于T的長度時候,循環繼續{if(j==0 || S[i]==T[j]){++i;++j;}else //指針后退 重新開始匹配{j = next[j]; //j退回合適的位置,i值不變}} }

總結

以上是生活随笔為你收集整理的五.串的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。