Regular Expression Matching 正则表达式匹配和递归
发布时间:2020-12-14 01:13:04 所属栏目:百科 来源:网络整理
导读:Regular Expression Matching Implement regular expression matching with support for '.' and '*' . '.' Matches any single character.'*' Matches zero or more of the preceding element.The matching should cover the entire input string (not part
Regular Expression MatchingImplement regular expression matching with support for '.' Matches any single character.
'*' Matches zero or more of the preceding element.
The matching should cover the entire input string (not partial).
The function prototype should be:
bool isMatch(const char *s,const char *p)
Some examples:
isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa","a*") → true
isMatch("aa",".*") → true
isMatch("ab",".*") → true
isMatch("aab","c*a*b") → true
class Solution { public: //* 匹配0或多个 前面的字符 // "a","ab*" bool isMatch(string s,string p) { int pLen=p.length(); int sLen=s.length(); if(pLen==0) return sLen==0; if(pLen==1) if( (s[0]==p[0] || p[0]=='.') && sLen==1) return true; else return false; if(p[1]!='*'){ if(s.length()>0 && (s[0]==p[0] || p[0]=='.')) return isMatch(s.substr(1),p.substr(1)); else return false; }else{ while(s.length()>0 && (p[0]==s[0] || p[0]=='.')) { if(isMatch(s,p.substr(2)))//*表示0个字符 return true; s=s.substr(1); } return isMatch(s,p.substr(2)); } } }; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |