码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-08-05 06:04:17      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:offer   char   递归   solution   else   false   blog   style   color   

//递归做的 开始用动态规划做 类似通配符问题 总感觉有问题 答案里面用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   char   递归   solution   else   false   blog   style   color   

原文地址:http://www.cnblogs.com/159269lzm/p/7288104.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!