正则表达式匹配

正则表达式匹配

http://www.nowcoder.com/questionTerminal/45327ae22b7b413ea21df13ee7d6429c

站在巨人的肩膀上
![图片说明](https://uploadfiles.nowcoder.com/images/20200527/327658856_1590592522966_FBCB11D91EB64998821BAAE3EFADFAC0 "图片标题")

class Solution {
public:
    bool match(char* str, char* pattern)
    {
        if(*str == '\0' && *pattern == '\0')    return true; //刚好结束

        if(*str != '\0' && *pattern == '\0')    return false;//模板用完

        if(*(pattern+1) != '*')//不能重复0-n次
        {
            if(*str == *pattern || (*str != '\0' && *pattern == '.'))//相同或者模板含有任意符号
                return match(str+1,pattern+1);
            else//不相同
                return false;
        }
        else
        {
            if(*str == *pattern || (*str != '\0' && *pattern == '.'))//相同或者模板含有任意符号
                return match(str+1,pattern+2) || match(str+1,pattern) || match(str,pattern+2);//第一个match表示 *只算作一个字符 第二个match表示 *算作多个字符 第三个match表示 尽管当前字符匹配 但*仍不算作字符(即为0)是要继续忽略的
            else
                return match(str,pattern+2);//不相同,使用0次
        }
    }
};
全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 19:05
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务