zoukankan      html  css  js  c++  java
  • [LeetCode] #10 Regular Expression Matching

    Implement 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

    本题采用迭代求解。时间:29ms。代码如下:

    class Solution {
    public:
        bool isMatch(const char *s, const char *p){
            if (s == NULL || p == NULL) return false;
            if (*p == '') return *s == '';
    
            if (*(p + 1) == '*'){
                while ((*s != '' && *p == '.') || *s == *p){
                    if (isMatch(s, p + 2)) 
                        return true;
                    ++s;
                }
                return isMatch(s, p + 2);
            }
            else if ((*s != '' && *p == '.') || *s == *p){
                return isMatch(s + 1, p + 1);
            }
            return false;
        }
    };
    “If you give someone a program, you will frustrate them for a day; if you teach them how to program, you will frustrate them for a lifetime.”
  • 相关阅读:
    layoutSubviews总结
    Vue.js:循环语句
    Vue.js:条件与循环
    Vue.js:模版语法
    Vue.js:起步
    Vue.js-Runoob:目标结构
    Vue.js-Runoob:安装
    Runoob-Vue.js:教程
    Vue.js:template
    培训-Alypay-Cloud:蚂蚁金融云知识点
  • 原文地址:https://www.cnblogs.com/Scorpio989/p/4418307.html
Copyright © 2011-2022 走看看