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

[LeetCode]10.Regular Expression Matching

时间:2015-07-07 16:54:00      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:leetcode

题目

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

标签:leetcode

原文地址:http://blog.csdn.net/sunnyyoona/article/details/46790395

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