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

  • 相关阅读:
    85. Maximal Rectangle
    120. Triangle
    72. Edit Distance
    39. Combination Sum
    44. Wildcard Matching
    138. Copy List with Random Pointer
    91. Decode Ways
    142. Linked List Cycle II
    异或的性质及应用
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/trouble-easy/p/12980967.html
Copyright © 2011-2022 走看看