萬用字元匹配演算法

2021-09-18 02:36:34 字數 2438 閱讀 2827

萬用字元匹配演算法

要求:1,a?b,查詢以a開始,b結尾中間為任意字元的子串出現的次數

2.?和的位置可以在前,後或者中間可以有任意多個,可以相互組合

3.起始位置不同的匹配視為兩次不同的匹配,例如,a?b aabbacbc 結果為3,aa aaa結果為2

4.起始位置相同的匹配,視為一次匹配,例如 ab abbacbc 結果為1

5.?表示任意單個字元,任意位置可以是多個也可以全是;*表示任意長度字元(可以為0),可以出現在任意位置,可以有多個,但不可以全是

例如,?? abcdabcabd 9

比如 a?b aabbacbc,匹配的子串有 1.aab 2.aabb 3.abb 4.acb,1和2起始位置相同,視為乙個

aab aabb aabbacb是乙個起點

#include #include #include int stringmatchlen(const char *pattern, int patternlen,

const char *string, int stringlen, int nocase)

while (patternlen)

if (patternlen == 1)

return 1; /** match */

while (stringlen)

return 0; /** no match */

break;

case '?':

if (stringlen == 0)

return 0; /** no match */

string++;

stringlen--;

break;

//case '[':

//// match = 0;

// while (1)

// else if (pattern[0] == ']')

// else if (patternlen == 0)

// else if (pattern[1] == '-' && patternlen >= 3)

// if (nocase)

// pattern += 2;

// patternlen -= 2;

// if (c >= start && c <= end)

// match = 1;

// }

// else

// else

// }

// pattern++;

// patternlen--;

// }

// if (inot)

// match = !match;

// if (!match)

// return 0; /** no match */

// string++;

// stringlen--;

// break;

//}//case '\\':

// if (patternlen >= 2)

/** fall through */

default:

if (!nocase)

else

string++;

stringlen--;

break;

}pattern++;

patternlen--;

if (stringlen == 0)

break;}}

if (patternlen == 0 && stringlen == 0)

return 1;

return 0;

}int stringmatch(const char *pattern, const char *string, int nocase)

const char* substring(const char* ch, int pos, int length)

//free(pch);

subch[length] = '\0';//加上字串結束符。

return subch; //返回分配的字元陣列位址。

}int getmatchcount(const char*pattern, const char *string)

{ int len = strlen(string);

int count = 0;

int itmp = 0;

for (int i = 0; i < len; i++)

{itmp = 0;

for (int j =i;j參考文件:

(

演算法練習 萬用字元匹配

給定乙個字串 s 和乙個字元模式 實現乙個支援 和 的萬用字元匹配。可以匹配任何單個字元。可以匹配任意字串 包括空字串 兩個字串完全匹配才算匹配成功。說明 s 可能為空,且只包含從 a z 的小寫字母。p 可能為空,且只包含從 a z 的小寫字母,以及字元 和 示例 1 輸入 s aa p a 輸出...

萬用字元匹配

implement wildcard pattern matching with support for and matches any single character.matches any sequence of characters including the empty sequence ...

萬用字元匹配

給定乙個輸入字串s 和模式p,p包含萬用字元?與星號 其中輸入s包含小寫字母a z,p包含小寫字母a z與?和星號,可以匹配任一字元,星號 可以匹配多個字元,包括空字元。給定輸入s與p,判斷s 與 p是否完全匹配。example 1 input s aa p a output false expla...