zoukankan      html  css  js  c++  java
  • LeetCode 010 Regular Expression Matching

    题目描述: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

    代码如下:

    class Solution {
    public:
        bool isMatch(const char *s, const char *p) {
            
            if(*p == '') return *s == '';
            
            //如果下一个字符不是*,那么就需要匹配当前的字符!
            if(*(p + 1) != '*'){
                
                //下一个字符相等,或者有一个是'.',则匹配成功
                if(*p == *s || (*p == '.' && *s != '')) 
                    return isMatch(s + 1, p + 1);
                else 
                    return false;
            }
            
            //下一个字符是*,则当前字符可以为0个或多个!
            else{
                while(*p == *s || (*p == '.' && *s != '')){
                    if(isMatch(s, p + 2)) 
                        return true;
                    s++;
                }
                return isMatch(s, p + 2);
            }
            
        }
    };
  • 相关阅读:
    大数据技术
    大数据技术
    大数据技术
    设计模式之代理模式
    大数据技术
    大数据技术
    大数据技术
    Intellij IDEA 解决 Maven 依赖下载慢的问题
    大数据技术
    QUdpSocket Class
  • 原文地址:https://www.cnblogs.com/510602159-Yano/p/4278702.html
Copyright © 2011-2022 走看看