您的位置:首页 > 其它

Regular Expression Matching

2015-06-13 23:01 218 查看
Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover theentire input string (not partial).The function prototype should be:bool isMatch(const char *s, const char *p)Some examples:isMatch("aa","a") → falseisMatch("aa","aa") → trueisMatch("aaa","aa") → falseisMatch("aa", "a*")→ trueisMatch("aa", ".*") → trueisMatch("ab", ".*") → trueisMatch("aab", "c*a*b") → truea*:匹配0个或多个a;首先判断某字符后是否是“*”,若不是“*”,则直接判断字符是否相等;若是“*”,则循环递归判断是否相等;
</pre><pre name="code" class="cpp">class Solution {public:bool isMatch1(string s,string p,int i,int j){int s_len = s.length();int p_len = p.length();int k = 0;if(i == s_len && j == p_len)return true;if(j > p_len || i> s_len)return false;if(p[j+1] != '*' && j+1 < p_len || j+1 == p_len){if(s[i] == p[j] && i<s_len || p[j] == '.' && i<s_len)return isMatch1(s,p,i+1,j+1);elsereturn false;}else{while(s[i] == p[j] && i<s_len || p[j] == '.' && i<s_len){if(isMatch1(s,p,i,j+2)){return true;}i++;}return isMatch1(s,p,i,j+2);}}bool isMatch(string s, string p) {return  isMatch1(s,p,0,0);}};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: