Regular Expression Matching 递归

原创 2015年07月07日 10:17:25

思路:
递归。时间复杂度O(N),空间复杂度O(1)。

* 代表可以匹配 0个 或 多个 前导字符;
. 代表可以匹配任意一个字符;

如果p[i]匹配到了最后的'\0',这是s[i]也到最后的'\0' ,则匹配成功,否则,失败;

如果没到最后,且如果 当前字符的下一个字符不是 * ,必须一一匹配;

如果没到最后,且如果 当前字符是 * ,看 * 的作用是1次or多次是否可以匹配;

最后,看* 的作用是0次是否匹配;

class Solution {
private:
    bool matchHelper(string &s, string &p, int i, int j) {
        if(p[j] == '\0') {
            return s[i] == '\0';
        }
        if(p[j+1] != '*') {
            if((s[i] == p[j]) || (p[j] == '.' && s[i] != '\0')) {
                return matchHelper(s, p, i+1, j+1);
            }else {
                return false;
            }
        }
        while((s[i] == p[j]) || (p[j] == '.' && s[i] != '\0')) {
            if(matchHelper(s, p, i, j+2)) {
                return true;
            }
            ++i;
        }
        return matchHelper(s, p, i, j+2);
    }
public:
    bool isMatch(string s, string p) {
        return matchHelper(s, p, 0, 0);
    }
};

【LeetCode010算法/编程练习C++】Regular Expression Matching//挺烦的一条……

10. Regular Expression Matching Total Accepted: 113015 Total Submissions: 481908 Difficulty: ...
  • zmdsjtu
  • zmdsjtu
  • 2016年12月27日 16:09
  • 507

正则表达式(Regular Expression)基本语法

一、简介 为什么需要正则表达式? 文本的复杂处理正则表达式的优势和用途? 一种强大而灵活的文本处理工具; 大部分编程语言、数据库、文本编辑器、开发环境都支持正则表达式。正则表达式定义: 正如...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2015年04月29日 22:00
  • 3975

10. Regular Expression Matching-动态规划/递归回溯

mplement regular expression matching with support for '.' and '*'. '.' Matches any single character...
  • u011567017
  • u011567017
  • 2016年09月11日 21:40
  • 572

Regular Expression Matching 正则表达式匹配和递归

Regular Expression Matching   Implement regular expression matching with support for '.' and...
  • u012605629
  • u012605629
  • 2015年06月16日 18:17
  • 387

浅谈正则表达式(Regular Expression)

一、什么是正则表达式? 简单的说:正则表达式(Regular Expression)是一种处理字符串匹配的语言; 正则表达式描述了一种字符串匹配的模式,可以用来检查一个字符串是否含有某种子串,对匹...
  • u014421422
  • u014421422
  • 2015年01月07日 09:17
  • 463

简单的正则表达式匹配 Regular Expression Matching

题目源自于Leetcode。 只需要支持两个匹配符*和.。 '.' Matches any single character. '*' Matches zero or more of the prec...
  • luckyjoy521
  • luckyjoy521
  • 2013年10月13日 22:41
  • 2071

LeetCode-10-Regular-Expression-Matching 递归模拟正则表达式

没什么好说的,注意一下为空的情况就行。 把p分类讨论了,然后写就行了。 class Solution(object): def isMatch(self, s, p): "...
  • qdbszsj
  • qdbszsj
  • 2017年09月05日 13:18
  • 89

(leetcode #10)Regular Expression Matching --递归法

Implement regular expression matching with support for '.' and '*'. '.' Matches any single character...
  • fssssssss
  • fssssssss
  • 2016年01月28日 12:06
  • 424

工具分享--RegularExpressionTool(正则表达式测试工具)

最近翻电脑硬盘,意外发现了一个自己开发的正则测试工具。至从开发完该工具后,就一直很少使用它,比较可惜,现在把它开源出来分享给大家。下面是该工具的一些截图,发来给各位围观下:主界面 测试正则,能察看组捕...
  • ghostbear
  • ghostbear
  • 2013年03月11日 09:41
  • 2538

算法设计与分析(7)-- Regular Expression Matching(难度:hard)

Regular Expression Matching
  • alexlau8
  • alexlau8
  • 2017年04月13日 22:14
  • 136
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Regular Expression Matching 递归
举报原因:
原因补充:

(最多只允许输入30个字)