LeetCode Notes Regular Expression Matching

先来题目:

‘.‘ 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

Hmm 关于这道题 刚开始看到题的时候对我来说 首先大体的思路很容易就出来了。 然后就是大概的框架也有了。

主要就是情况要分清楚。关于‘.‘和‘*’的用法 以及几种特殊情况。 另外刚开始,我完全没有察觉可以直接用imatch然后我就一直在想怎么match啊怎么match啊哈哈

答案仅供参考啊0.0主要还是逻辑问题 要分清楚case最重要

public class Solution {
    public boolean isMatch(String s, String p) {
        //easy to think about
        if(p.length()==0){
            return s.length()==0;
        }

       //special case
        if(p.length()==1){
            if(s.length()<1){
                return false;
            }
            else if((s.charAt(0)!=p.charAt(0))&&(p.charAt(0)!=‘.‘)){
                return false;
            }
            else{
                return isMatch(s.substring(1),p.substring(1));
            }
        }
       //easy to write, hard to think
        if(p.charAt(1)!=‘*‘){
            if(s.length()<1){
                return false;
            }
            else if((p.charAt(0)!=s.charAt(0))&&(p.charAt(0)!=‘.‘)){
                return false;
            }else{
                return isMatch(s.substring(1),p.substring(1));
            }
        }
       //most difficult one
        else{
            if(isMatch(s,p.substring(2))){
                return true;
            }
            int i=0;
            while(i<s.length()&&(s.charAt(i)==p.charAt(0)||p.charAt(0)==‘.‘)){
                if(isMatch(s.substring(i+1),p.substring(2))){
                return true;
                }
                i++;
            }
            return false;
        }

    }
}
时间: 2024-08-09 11:35:20

LeetCode Notes Regular Expression Matching的相关文章

LeetCode 010 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 shou

LeetCode——010 Regular Expression Matching

title: LeetCode--010 Regular Expression Matching author: zzw top: false toc: true mathjax: false email: [email protected] date: 2020-02-19 22:05:32 updated: 2020-02-19 22:05:32 img: summary: categories: LeetCode tags: 字符匹配 --- Description Given an in

LeetCode 10. Regular Expression Matching

https://leetcode.com/problems/regular-expression-matching/description/ Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the preceding element. The matching should cover

[LeetCode][Python]Regular Expression Matching

# -*- coding: utf8 -*-'''https://oj.leetcode.com/problems/regular-expression-matching/ Implement regular expression matching with support for '.' and '*'. '.' Matches any single character.'*' Matches zero or more of the preceding element. The matchin

LeetCode (10): Regular Expression Matching [HARD]

https://leetcode.com/problems/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 ent

[LeetCode][JavaScript]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

leetcode题解||Regular Expression Matching 问题

problem: Implement regular expression matching with support for '.' and '*'. '.' Matches any single character. '*' Matches zero or more of the<span style="color:#ff0000;"> preceding element</span>. The matching should cover the entir

(待解决)LeetCode 10. Regular Expression Matching 解题报告

10. Regular Expression Matching 提交网址: https://leetcode.com/problems/regular-expression-matching/ Total Accepted: 79548 Total Submissions: 361279 Difficulty: Hard Implement regular expression matching with support for '.' and '*'. '.' Matches any sing

Leetcode 10 regular expression matching (正则表达式匹配) (动态规划)

Leetcode 10 问题描述 Given an input string (s) and a pattern (p), 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 entir