陣列和字串

2021-09-29 13:20:05 字數 958 閱讀 1379

串長度:串中所包含的字元個數。

空串:長度為0的串,記為:" "。

子串:串中任意個連續的字元組成的子串行。

主串:包含子串的串。

子串的位置:子串的第乙個字元在主串中的序號

2.串的儲存結構

順序串:用陣列來儲存串中的字串行

鏈結串:用鏈結儲存結構來儲存串。

3.模式匹配

給定主串s="s1s2…sn"和模式t=「t1t2…tm」,

在s中尋找t 的過程稱為模式匹配。

基本思想:

從主串s的第0個字元開始和模式t 的第0個字元進行比較,

若相等,則繼續比較兩者的後續字元;

否則,從主串s的第1個字元開始和模式t 的第0個字元進行比較,

重複上述過程,直到t 中的字元全部比較完畢,則說明本趟匹配成功;或s中字元全部比較完,則說明匹配失敗。

說明:模式匹配過程要進行多趟的匹配,每趟匹配要進行若干次的比較。

4.bf演算法

**:

intbf(

char s,

char t)

else}if

(j>=t.

length()

)return

(i-j)

;else

return-1

;}

5.kmp演算法

結論: i可以不回溯,模式向右滑動到的新比較起點k ,並且k 僅與模式串t有關。

思路:1.在串s和串t中分別設比較的起始下標i和j;

迴圈直到s中所剩字元長度小於t的長度或t中所有字元均比較完畢

2.1 如果s[i]==t[j],繼續比較s和t的下乙個字元;否則

2.2 將j向右滑動到next[j]位置,即j=next[j];

2.3 如果j=-1,則將i和j分別加1,準備下一趟比較;

如果t中所有字元均比較完畢,則返回匹配的起始下標;否則返回-1;

字串和字串陣列

字串陣列 include int main int argc,const char ar printf name1 s n name1 name1 zhangsan 部分初始化中,沒有被初始化的元素預設是0,0 對應的ascii值是 0 char name2 9 printf name2 s n n...

字串和字串陣列和 0

c語言中字串為什麼要有 0呢?0在字串中的作用是什麼 0 在字串中標誌著結尾 用來判斷這個字串已經結束 如果不新增 0 系統就在記憶體中一直向後讀,直到讀到 0 為止 這個情況就造成錯誤 乙個語句結束了,就用分號 表示結束 首先要區分,字元,字元陣列,字串的區別。字串預設的最後會有 0 char k...

字串和字元陣列

void test1 函式test1中,指標str1所指向的字串有11個元素。一定要注意字串是以 0 為結尾的,而strcpy拷貝了整個字串包括 0 所以存在下標越界的問題。void test2 函式test2中,字元陣列str1包含10個元素。陣列str1並不是以 0 結束,所以不能作為字串使用。...