首页 > 代码库 > leetcode 10. Regular Expression Matching
leetcode 10. 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 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
1.p为空,那s必然也为空
2.s为空,看p的第二字符是否为*,为*的话 则为isMatch(s,p.substring(2));
3.都不为空,p的第二字符为*,一种情况是直接跳过*部分isMatch(s,p.substring(2)),一种情况是首字符相等isMatch(s.substring(1),p),一种情况是p首字符是.
4.都不为空,p的第二字符不为*,看首字符是否相等
1 public class Solution { 2 public boolean isMatch(String s, String p) { 3 if ("".equals(p)) 4 return "".equals(s); 5 else if ("".equals(s)){ 6 if (p.length()>1&&p.charAt(1)==‘*‘){ 7 return isMatch(s,p.substring(2)); 8 }else 9 return false; 10 } 11 else if (p.length()>1&&p.charAt(1)==‘*‘){ 12 if (isMatch(s,p.substring(2)))//skip .* 13 return true; 14 else if(s.charAt(0)==p.charAt(0)||p.charAt(0)==‘.‘){ 15 return isMatch(s.substring(1),p); 16 }else { 17 return false; 18 } 19 }else { 20 if (p.charAt(0)==s.charAt(0)||p.charAt(0)==‘.‘) 21 return isMatch(s.substring(1),p.substring(1)); 22 else 23 return false; 24 } 25 } 26 }
leetcode 10. Regular Expression Matching
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。