文章目录

//判斷字符串與模式是否匹配 //.表示匹配任意字符; *表示它前面的字符出現的次數(包含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;
}
文章目录