[LeetCode]10.Regular Expression Matching

原创 2015年07月07日 15:41:02

题目

mplement regular expression matching with support for '.' and '*'.

'.' Matches any single character.
'*' Matches zero or more of the preceding element.

The matching should cover the entire input string (not partial).

The function prototype should be:
bool isMatch(const char *s, const char *p)

Some examples:
isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "a*") → true
isMatch("aa", ".*") → true
isMatch("ab", ".*") → true
isMatch("aab", "c*a*b") → true

思路

这里写图片描述

代码

/*------------------------------------------------------------------------------------
*   日期:2014-04-03
*   作者:SJF0115
*   题目: 10.Regular Expression Matching
*   来源:http://oj.leetcode.com/problems/regular-expression-matching/
*   结果:AC
*   来源:LeetCode
------------------------------------------------------------------------------------*/
#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

class Solution {
public:
    bool isMatch(const char *s, const char *p) {
        if(s == NULL || p == NULL || *p == '*') {
            return false;
        }
        if(*p == '\0') return *s == '\0';
        //next char is not '*': must match current character
        if(*(p+1) != '*') {
            if(*s == '\0') return false;
            if(*p != '.' && *p != *s) return false;
            return isMatch(s+1,p+1);
        }
        //next char is '*'
        else {
            int slen = strlen(s);
            if(isMatch(s,p+2)) return true;
            for(int i = 0; i < slen; ++i) {
                if(*p!='.' && *p != *(s+i)) return false;
                if(isMatch(s+i+1,p+2)) return true;
            }
            return false;
        }
    }
};

int main() {
    Solution solution;
    char* s = "abcbcd";
    char* p = "ab*bbc";
    bool result = solution.isMatch(s,p);
    cout<<result<<endl;
    return 0;
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

leetcode 10.Regular Expression Matching(正则表达式匹配) 解题思路和方法

Regular Expression Matching Implement regular expression matching with support for '.' and '*'. ...

LeetCode之10 --- Regular Expression Matching

题目:   , Implement regular expression matching with support for '.' and '*'. '.' Matches any sin...

leetcode 10 Regular Expression Matching

Regular Expression Matching Total Accepted: 51566 Total Submissions: 249926 Implement regul...
  • javays1
  • javays1
  • 2015年08月22日 06:56
  • 159

[Leetcode]10. Regular Expression Matching @python

题目Implement regular expression matching with support for ‘.’ and ‘*’.‘.’ Matches any single characte...

leetcode10_Regular Expression Matching

10. Regular Expression Matching题目描述: ‘.’ Matches any single character. ‘*’ Matches zero or ...

leetcode 10 Regular Expression Matching(Dynamic Programming)

题意: '.' Matches any single character. '*' Matches zero or more of the preceding element. The matchi...

LeetCode题解——10Regular Expression Matching

题目: Implement regular expression matching with support for '.' and '*'. '.' Matches any single char...

LeetCode(10) Regular Expression Matching

题目Implement regular expression matching with support for ‘.’ and ‘*’.‘.’ Matches any single characte...
  • fly_yr
  • fly_yr
  • 2015年09月28日 13:45
  • 352

LeetCode 10. Regular Expression Matching(hard)

题目描述Implement regular expression matching with support for ‘.’ and ‘*’.‘.’ Matches any single charac...

(Leetcode)10.Regular Expression Matching(hard)

Implement regular expression matching with support for ‘.’ and ‘*’. ‘.’ Matches any single characte...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[LeetCode]10.Regular Expression Matching
举报原因:
原因补充:

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