zoukankan      html  css  js  c++  java
  • [leedcode 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

    public class Solution {
        public boolean isMatch(String s, String p) {
            //递归实现 注意终止条件:p的长度判断p==0;p==1;p>=2;三种
           //当p大于1时,判断p[1]和'*'的关系,若!='*',正常比较s和p.    substring(1)
           //若p[j+1]=='*',如果是p[j]==s[j],需要比较s[j]=p[j+2] or s[j+1]=p[j+2] or s[j+2]=p[j+2]...  ;若p[j]!=s[j],s[j]=p[j+2]
           
           if(p.length()==0)
                return s.length()==0?true:false;//判断是否都为空,很有技巧
           if(p.length()==1){
               return s.length()==1&&(s.charAt(0)==p.charAt(0)||p.charAt(0)=='.');
           }
           if(p.charAt(1)!='*'){
               if(s.length()==0)return false;
               if(s.charAt(0)==p.charAt(0)||p.charAt(0)=='.')
                    return isMatch(s.substring(1),p.substring(1));
                else return false;
               
           }else{
               while(s.length()>0&&(s.charAt(0)==p.charAt(0)||p.charAt(0)=='.')){
                   if(isMatch(s,p.substring(2)))
                        return true;
                   s=s.substring(1);
               }
               return isMatch(s,p.substring(2));
               
               
           }
           
           
        }
    }
  • 相关阅读:
    EBS R12.2 运行请求出错
    仿ORACLE的TRUNC函数
    EBS职责清单(Responsibility)
    Oracle 11G Client 客户端安装步骤
    UltraIso-写入硬盘映像
    EBS-WIP完工入库
    LeetCode 2 两数相加
    LeetCode 1.两数之和
    装饰器示例
    爬虫day1
  • 原文地址:https://www.cnblogs.com/qiaomu/p/4625337.html
Copyright © 2011-2022 走看看