#include<iostream>
using namespace std;
bool check(char* str, char* pattern,int i,int j) {
if (str[i] == '\0'&&pattern[j] == '\0') return true;
if (str[i] == '\0'&&pattern[j] != '\0' || str[i] != '\0'&&pattern[j] == '\0') return false;
if ((str[i] == pattern[j]|| pattern[j] == '.') && pattern[j + 1]=='*') {
return check(str,pattern,i + 1,j + 2)|| check(str, pattern, i + 1, j)||check(str, pattern, i, j + 2);
}
else if((str[i] == pattern[j] || pattern[j] == '.') && pattern[j + 1] != '*'){
return check(str, pattern, i + 1, j + 1);
}
else if (pattern[j + 1] == '*') {
return check(str,pattern,i,j + 2);
}
else return false;
}
bool match(char* str,char* pattern) {
if (str == NULL || pattern == NULL) return false;
return check(str, pattern,0, 0);
}
int main() {
char *p = "aaa";
char *q = "ab*ac*a";
char *d = "ab*a";
cout<< (match(p,q)==true) <<endl;
cout << (match(p, d) == true) << endl;
return 0;
}
剑指offer19
最新推荐文章于 2023-08-03 23:58:32 发布