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;
        }

  • 相关阅读:
    Linux查看进程运行的完整路径方法
    http chunked编码格式
    剑指offer 26. 树的子结构
    101. 对称二叉树
    http长链接处理不当引发的问题
    linux gstack pstack 进程运行堆栈查看工具 strip
    96. 不同的二叉搜索树
    LeetCode350. 两个数组的交集 II
    C++ Vector转Set与Set转Vector
    Go语言学习笔记十五--Go语言map的基本操作
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12980967.html
Copyright © 2011-2022 走看看