经典算法正则表达式匹配

1、题目描述

2、我的代码

    class Solution{
    public:
    bool isMatch(string s, string p) {
    int len_src = s.length();
    int len_gui = p.length();
    bool first_match = false;
    if(len_gui == 0)
        return s.empty();

    first_match = (!s.empty() && (p[0] == s[0] || p[0] == '.'));

    if(len_gui >= 2 && p[1] == '*'){
        return (isMatch(s,p.substr(2)) || (first_match && isMatch(s.substr(1),p)));
    }else{
        return first_match && isMatch(s.substr(1),p.substr(1));
    }
    
    
}
};

3、网上好的解法

    class Solution {
public boolean isMatch(String text, String pattern) {
    if (pattern.isEmpty()) return text.isEmpty();
    boolean first_match = (!text.isEmpty() &&
                           (pattern.charAt(0) == text.charAt(0) || pattern.charAt(0) == '.'));
    if (pattern.length() >= 2 && pattern.charAt(1) == '*'){
        return (isMatch(text, pattern.substring(2)) ||
                (first_match && isMatch(text.substring(1), pattern)));
    } else {
        return first_match && isMatch(text.substring(1), pattern.substring(1));
    }
}
}

4、自己可以改进的地方

5、优化代码至简无可简

6、我的思考

发布了5 篇原创文章 · 获赞 0 · 访问量 34

猜你喜欢

转载自blog.csdn.net/digitaluser/article/details/105669925