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
实现正规表达式,不是很明白,有空仔细研究一下










    Code:

    public class Solution {
        public boolean isMatch(String s, String p) {
            if (p.isEmpty()) {
    	        return s.isEmpty();
    	    }
    	    if (p.length() == 1 || p.charAt(1) != '*') {
    	        if (s.isEmpty() || (p.charAt(0) != '.' && p.charAt(0) != s.charAt(0))) {
    	            return false;
    	        } else {
    	            return isMatch(s.substring(1), p.substring(1));
    	        }
    	    }
    	    //P.length() >=2
    	    while (!s.isEmpty() && (s.charAt(0) == p.charAt(0) || p.charAt(0) == '.')) {  
    	        if (isMatch(s, p.substring(2))) { 
    	            return true;                     
    	        }                                    
    	        s = s.substring(1);
    	    }
    	    return isMatch(s, p.substring(2));
        }
    }








    • 0
      点赞
    • 0
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值