字符串1:只含有英文字母,
字符串2:含有英文字母和*,其中符号*表示匹配任意字符0或者多次,即正则表达式里面的含义。
现在给定这样的两个串,要求判断是否匹配?
bool isMatch ( const char *str1, const char *str2)
例如:str1 = "hello", str2 = "he*o",则二者匹配,返回true,
str1 = "hello", str2 = "he*l",则不匹配,返回false。
bool isMath ( const char *str, const char *pattern )
{
if( NULL == str || NULL == pattern )
{
return false;
}
if ( *str == 0 || *pattern == 0 )
{
if ( *str == 0 && *pattern == 0 )
{
return true;
}
if ( *pattern == '*' ) //if(*pattern=='*' && *(pattern+1)==0)?
{
return true;
}
return false;
}
if ( *pattern == '*' )
{
int str_len = strlen ( str );
for ( int i = 0; i < str_len; ++i )
{
if ( isMath ( str + i, pattern + 1 ) )
{
return true;
}
}
return false;
}
if ( *pattern == *str )
{
return isMath ( str + 1, pattern + 1 );
}
return false;
}