面试题19:正则表达式匹配

考察字符串匹配:正则表达式。

C++版

#include <iostream>
#include <algorithm>
using namespace std;

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) || matchCore(str+1, pattern) || matchCore(str, pattern+2);
        else
            return matchCore(str, pattern+2);
    }
    if(*pattern == *str || (*pattern == '.' && *str != '\0'))
        return matchCore(str+1, pattern+1);
    return false;
}

bool match(char str[], char pattern[]){
    if(str == nullptr || pattern == nullptr)
        return false;
    return matchCore(str, pattern);
}

int main()
{
    char str[] = {'a','a','a','\0'};
    char pattern[] = {'a','.','a','\0'};
    if(match(str, pattern))
        cout<<"yes."<<endl;
    else
        cout<<"no."<<endl;
    return 0;
}

posted @ 2020-07-23 10:15  程序员曾奈斯  阅读(197)  评论(0编辑  收藏  举报