字符串与给定模式是否匹配
文章目录
//判斷字符串與模式是否匹配 //.表示匹配任意字符; *表示它前面的字符出現的次數(包含0次)
#include <iostream>
using namespace std;
bool matchCore(char* str,char* pattern);
bool match(char* str,char* pattern){
if(str==NULL|| pattern==NULL)
return false;
return matchCore(str,pattern);
}
bool matchCore(char* str, char* pattern){
if(*str=='\0' && *pattern=='\0')
return true;
if(*str!='\0' && *pattern=='\0')
return false;
if(*(pattern+1)=='*'){
if(*pattern==*str ||(*pattern =='.' && *str!='\0'))
return matchCore(str+1,pattern+2) //比較下一個狀態 *前數字出現1次
|| matchCore(str+1,pattern) //停留在當前狀態 >=2
|| matchCore(str,pattern+2);//忽略* 0
else//忽略*
return matchCore(str,pattern+2);
}
if(*str==*pattern || (*pattern =='.' && *str !='\0'))//.表示任意一個字符,肯定匹配
return matchCore(str+1,pattern+1);
return false;
}
int main()
{
cout <<match("aaa","ab*a");
return 0;
}