题目:https://leetcode-cn.com/problems/regular-expression-matching/submissions/
Java解答(按照剑指offer的C语言改的):
class Solution {
public boolean match(String s, String p,int a,int b) {
int m = s.length();
int n = p.length();
if(a==n && b==m){
return true;
}
if(a==n && m!=b) {
return false;
}
if(a+1<n && p.charAt(a+1) == '*') {
if((a<n && b<m && p.charAt(a)==s.charAt(b) )|| (a<n && b<m && p.charAt(a) == '.' && b <m)) {
return match(s,p,a+2,b+1) || match(s,p,a,b+1) || match(s,p,a+2,b);
}
else {
return match(s,p,a+2,b);
}
}
if((a<n && b<m && p.charAt(a)==s.charAt(b)) || (a<n && b<m && p.charAt(a)=='.')) {
return match(s,p,a+1,b+1);
}
return false;
}
public boolean isMatch(String s, String p) {
if(s == null || p == null) {
return false;
}
return match(s,p,0,0);
}
}