题目要求这里不再赘述,有两点点需要注意:
一、"*" 所代表的含义是代表其之前的字符的0个或多个重复。如 “a*” 代表 ‘a‘ 后面跟0个或者多个字符 ‘a‘;
二、用 C++ 实现的话后面函数的入参是 string 型,在这里按字符处理的时候有诸多不便,可以转换为 char * 进行处理。
class Solution { public: bool isMatchChar(const char *s, const char *p){ if(*p == '\0') return *s == '\0'; if(*(p + 1) != '*'){ if(*s != '\0' && (*p == *s || *p == '.')){ return isMatchChar(s + 1, p + 1); }else{ return false; } }else{ while(*s != '\0' && (*s == *p || *p == '.')){ if(isMatchChar(s, p + 2)) return true; s++; } return isMatchChar(s, p + 2); } } bool isMatch(string s, string p) { int lens = s.length(); int lenp = p.length(); char* schar = new char[lens + 1]; char* pchar = new char[lenp + 1]; strcpy(schar, s.c_str()); strcpy(pchar, p.c_str()); schar[lens] = '\0'; pchar[lenp] = '\0'; return isMatchChar(schar, pchar); } };
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/ny_mg/article/details/46823623