zoukankan      html  css  js  c++  java
  • 牛客(52)正则表达式匹配

    //    题目描述
    //    请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,
    //    而'*'表示它前面的字符可以出现任意次(包含0次)。
    //    在本题中,匹配是指字符串的所有字符匹配整个模式。
    //    例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配
    
        public static boolean match(char[] str, char[] pattern) {
            if(str == null || pattern == null){
                return false;
            }
            return matchCode(str,0,pattern,0);
        }
    
        public static boolean matchCode(char[] str, int strIndex, char[] pattern, int patternIndex) {
            //匹配结束
            if (strIndex==str.length&&patternIndex==pattern.length){
                return true;
            }
            //匹配失败
            if (strIndex!=str.length&&patternIndex==pattern.length){
                return false;
            }
            //当第二个是*时
            if (patternIndex<pattern.length-1 && pattern[patternIndex+1]=='*'){
                //当前字符可以匹配
                if (strIndex != str.length&&(str[strIndex]==pattern[patternIndex]||pattern[patternIndex]=='.')){
                    return matchCode(str,strIndex+1, pattern,patternIndex)||//当前匹配
                            matchCode(str,strIndex+1, pattern,patternIndex+2)||//匹配一次结束
                            matchCode(str,strIndex, pattern,patternIndex+2);//匹配零次结束
                }else{
                    return matchCode(str,strIndex, pattern,patternIndex+2);
                }
            }
    //        当第二个不是*
            if (strIndex != str.length&&(str[strIndex]==pattern[patternIndex]||pattern[patternIndex]=='.')){
                return matchCode(str,strIndex+1, pattern,patternIndex+1);
            }
    
            return false;
        }
  • 相关阅读:
    微信公众平台开发(6) 微信退款接口
    shiro 认证和授权原理
    Shiro架构
    微信公众平台开发(5) 微信客服消息接口
    微信公众平台开发(4) 微信模板消息接口
    微信公众平台开发(3) 企业付款
    微信公众平台开发(1) 通用的工具类CommonUtil
    spring 源码构建
    springMvc配置拦截器无效
    IIdea使用CXF开发WebService
  • 原文地址:https://www.cnblogs.com/kaibing/p/9099270.html
Copyright © 2011-2022 走看看