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.”
  • 相关阅读:
    大数据基础——MR编程应用——对中间件的操作
    Hadoop_Hive整理——原理及配置
    Hadoop&Hive——小结
    mysql_小结之事务
    Linux_大数据与数据仓库
    移动布局小结
    JDBC——小结
    Mysql优化反刍
    NoSql-Verson1.0
    python-6
  • 原文地址:https://www.cnblogs.com/Scorpio989/p/4418307.html
Copyright © 2011-2022 走看看