字串 匹配

2021-10-04 02:36:30 字數 1017 閱讀 9469

目錄目標

元素說明 思路

** 易錯&注意點

子字串在主串中檢索是否存在一段字串等於子字串。

flag:標誌匹配成功的進度

count:記錄匹配次數(便於程式出錯時排錯)每次字串從頭開始時,為1次。

str:主字串

size:主字串長度

str1:子字串

size1:子字串長度

i:主串str座標標記

j:子串str1座標標記

雙層迴圈:主串迴圈,子串迴圈

當str1[j]==str[i] --->主串標誌位+1,子串標誌位+1,匹配進度+1

主串標誌位+1--->i++;(在迴圈語句中體現)

子串標誌位+1--->j++;(在迴圈語句中體現)

匹配進度+1--->flag++;

當str1[j] !=str[i] --->主串標誌位回退flag+1次,子串標誌位清0,flag清0

主串標誌位回退flag+1--->i-=flag;i++;(在迴圈語句中體現)

子串標誌位清0--->j=-1;j++;(在迴圈語句中體現)

flag清0--->flag=0;

#include#include#includeint flag=0;//匹配成功標記

int count=0;

void checkstr(char* str,char* str1)

{ int size=strlen(str );

int size1=strlen(str1);

int i=0,j=0;

printf("size=%d\nsize1=%d\n",size,size1);

for(;i1.break;的使用:跳出最裡層迴圈。break不受if等語句的影響!!!

2.當中途匹配失敗時,flag清0;主串標誌位需要回退!!!

字串匹配

題目描述 讀入資料string 然後讀入乙個短字串。要求查詢string 中和短字串的所有匹配,輸出行號 匹配字串。匹配時不區分大小寫,並且可以有乙個用中括號表示的模式匹配。如 aa 123 bb 就是說aa1bb aa2bb aa3bb都算匹配。輸入 輸入有多組資料。每組資料第一行輸入n 1 n ...

字串匹配

time limit 1000ms memory limit 65536k 給定兩個字串string1和string2,判斷string2是否為string1的子串。輸入包含多組資料,每組測試資料報含兩行,第一行代表string1,第二行代表string2,string1和string2中保證不出現...

字串匹配

面試題 給一串很長的字串,要求找到符合要求的字串,例如目的串 123 1 3 2 12 3 這些都要找出來 思路一 利用兩層迴圈,逐個查詢目的串中的字元,比如先查詢字元 1 是否在長字串中,再查詢 2 是否在長字串中,直到目的串遇到 0 是 include include include int m...