剑指offer---正则表达式匹配

Posted 双马尾是老公的方向盘

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offer---正则表达式匹配相关的知识,希望对你有一定的参考价值。

//递归做的 开始用动态规划做 类似通配符问题 总感觉有问题 答案里面用dp做的多多少少有点问题
//估计是我水平太低
//只是其中一个带符号!
class Solution 
{
public:
    bool match(char* str, char* pattern)
    {
        if(str==NULL||pattern==NULL)
        {
            return false;
        }
        return digui(str,pattern);
    }
    bool digui(char* str,char* pattern)
    {
        //出口条件
        if(*str==\0&&*pattern==\0) return true;
        
        //因为‘.‘和‘*‘都是在pattern中 所以以下这种情况必然为FALSE
        if(*str!=\0&&*pattern==\0) return false;
        
        
        //如果有星号 看星号前面这个元素是否相等
        if(*(pattern+1)==*)
        {
            if((*pattern==*str)||(*pattern==.&&*str!=\0))
            {
                //星号前面的相等了
                return (digui(str,pattern+2)||digui(str+1,pattern));
                //为什么不是digui(str+1,pattern+1) 
                //因为字母加星号是有可能对应str中连续多个元素的
            }
            else
            {
                //不一样就很简单了
                return digui(str,pattern+2);
            }
        }
        
        if(*str==*pattern||(*pattern=.&&*str!=\0))
        {
            return digui(str+1,pattern+1);
        }
        
        return false;
    }
   
};

 

以上是关于剑指offer---正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章

《剑指offer》 面试题53 :正则表达式匹配 Java

LeetCode(剑指 Offer)- 19. 正则表达式匹配

剑指Offer52:正则表达式匹配(Java)

剑指offer-正则表达式匹配

剑指offer52:正则表达式匹配

剑指offer:正则表达式匹配