面试题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;
}