正则表达式匹配
正则表达式匹配
http://www.nowcoder.com/practice/28970c15befb4ff3a264189087b99ad4
这道题目自己觉得挺难。
import java.util.*; public class Solution { public boolean match (String s, String p) { if (s == null || p == null) return false; return doMatch(s, 0, p, 0); } private boolean doMatch(String s, int i, String p, int j) { if (i == s.length() && j == p.length()) return true; if (i != s.length() && j == p.length()) return false; if (j + 1 < p.length() && p.charAt(j + 1) == '*') { if ((i < s.length() && p.charAt(j) == s.charAt(i)) || (p.charAt(j) == '.' && i != s.length())) { return doMatch(s, i, p, j + 2) || doMatch(s, i + 1, p, j) || doMatch(s, i + 1, p, j + 2); } else { return doMatch(s, i, p, j + 2); } } if ((i < s.length() && p.charAt(j) == s.charAt(i)) || (p.charAt(j) == '.' && i != s.length())) { return doMatch(s, i + 1, p, j + 1); } return false; } }