zoukankan      html  css  js  c++  java
  • 剑指offer51-正则表达式匹配

    题目描述

    请实现一个函数用来匹配包括'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配

       bool match(char* str, char* pattern)
        {
            //
            
            if(str==NULL&&pattern==NULL) return false;
            return matchPattern(str,pattern);
        }
        bool matchPattern(char*str,char*pattern)
        {
            if(*str==''&&*pattern=='') return true;
            if(*str!=''&&*pattern=='') return false;
            if(*(pattern+1)=='*')
            {
                //!
                if(*pattern==*str||(*str!=''&&*pattern=='.'))//1至n匹配
                    return matchPattern(str+1,pattern)||matchPattern(str,pattern+2);
             //   if
               //    return matchPattern(str+1,pattern+2);
                if(*pattern!=*str)//0匹配
                    return matchPattern(str,pattern+2);
            }
            if(*pattern=='.')
            {
                if(*str=='')return false;
                return matchPattern(str+1,pattern+1);
            }
            if(*str==*pattern)
            return matchPattern(str+1,pattern+1);
            return false;
        }

  • 相关阅读:
    MYSQL数据库查看被锁状态以及解锁
    MongoDB命令
    代码重构
    笔试常见之C类型转换
    WeakReference(弱引用)(转)
    Linux ubuntu16.04下vim的安装与配置
    mysql Access denied for user root@localhost之错误解决方法(错误码:1045)
    mysql服务无法启动报错1067解决办法 (mysql启动错误1067)
    js的ajax封装
    windows下apache tomcat整合
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12980967.html
Copyright © 2011-2022 走看看