6/18/2014

127. Regular Expression Matching

public class Solution {
    public boolean isMatch(String s, String p) {
        return isM(s, p, 0, 0);
    }
   
    public boolean isM(String s, String p, int i, int j) {
        if (j>=p.length()) return i>=s.length();
       
        if (j==p.length()-1) return (i==s.length()-1) && (s.charAt(i)==p.charAt(j) || p.charAt(j)=='.');
       
        if (j+1<p.length() && p.charAt(j+1) != '*') {
            if (i==s.length()) return false;
            if (s.charAt(i)==p.charAt(j) || p.charAt(j)=='.') return isM(s, p, i+1, j+1);
            else return false;
        }
       
        while (i<s.length() && j<p.length() && (s.charAt(i)==p.charAt(j) || p.charAt(j)=='.')) {
            if (isM(s, p, i, j+2)) return true;
            i++;
        }
       
        return isM(s, p, i, j+2);
    }
}

没有评论:

发表评论