您的位置:首页 > 其它

带‘.‘和’*‘的字符串匹配

2015-09-01 17:16 387 查看
’.‘代表一个任意字符

a’*‘代表0~n个a

测试两个字符串是否匹配

#include <iostream>
#include <string>
using namespace std;
bool matchCore(const char* str,const 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+1)||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(const char* str,const char* pattern)
{
if(str==NULL || pattern==NULL)
return false;
return matchCore(str,pattern);
}
int main()
{
string _str,_pattern;
getline(cin,_str,'\n');
getline(cin,_pattern,'\n');
const char *str=_str.c_str();
const char *pattern=_pattern.data();
cout<<match(str,pattern)<<endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: