萬用字元匹配演算法
要求: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...