正则表达式的匹配,一看吓尿了。
写个正则引擎还是挺麻烦的。。
不过仔细一看,原来是精简过的,只有. *这两种(正则好像也就这两种)
主要就是*,匹配0到多个。。。
那直接用递归吧。
class Solution { public: bool isMatch(const char *s, const char *p) { // Note: The Solution object is instantiated only once and is reused by each test case. if(*p == '\0') return *s == '\0'; if(*(p + 1) != '*'){ return (*s == *p || (*p == '.' && *s != '\0')) && isMatch(s+1 , p+1); }else{ while(*p == *s || (*p == '.' && *s != '\0')){ if(isMatch(s , p+2)) return true; //match 1,2,3,4....n s++; } return isMatch(s , p+2); //match 0 } } };
by 1957