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;
        }
  • 相关阅读:
    Robot Framework + Selenium library + IEDriver环境搭建
    【转】大话测试数据(一)
    TEST DESIGN TECHNIQUES: AN OVERVIEW
    24 WHEN CAN WE STOP TESTING?
    MySql Trace
    ORGANISING THE TEST CASES
    angular教程
    vue报错一
    sort()
    时间戳
  • 原文地址:https://www.cnblogs.com/kaibing/p/9099270.html
Copyright © 2011-2022 走看看