您的位置:首页 > 其它

LeetCode problem 10: Regular Expression Matching

2017-11-18 19:34 627 查看
class Solution {
public:
bool match(string s, string p, int ss, int ps){
int psize = p.size();
int ssize = s.size();
while (ps < psize && ss < ssize){
char c = p[ps];
if (c != '.' && c != '*'){
if (c != s[ss]){
return false;
}
ps ++;
ss ++;
continue;
}
if (c == '*'){
if (ps == 0){
return false;
}
char p_last = s[ps-1];
if (p_last == '.'){
p_last = s[ss-1];
}
int sss = ss;
while (sss < ssize && p_last == s[sss]){
if (match(s, p, ++sss, ps+1)){
return true;
}
}
}
ss ++;
ps ++;
}
return (ps == psize && ss == ssize);
}
bool isMatch(string s, string p) {
return match(s, p, 0, 0);
}
};


  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: