剑指offer19

#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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值