正则表达式匹配
正则表达式匹配
http://www.nowcoder.com/questionTerminal/45327ae22b7b413ea21df13ee7d6429c
public class Solution { public boolean match(char[] str, char[] pattern) { if(str==null||pattern==null)return false; int s=0,p=0; return matchP(str,pattern,s,p); //看模式第二个是否是* } public boolean matchP(char[] str, char[] pattern, int s, int p){ if(p==pattern.length) return s==str.length;//如果模式串到结尾,看是否匹配串到结尾了 if(p+1<pattern.length && pattern[p+1]=='*'){ if(s!=str.length &&(pattern[p]==str[s]||pattern[p]=='.'))//容易犯错的是,如果单独把s!=str.length拿到外层循环,会报错。 return matchP(str,pattern,s+1,p)||//匹配多个 matchP(str,pattern,s,p+2)||//匹配零个 matchP(str,pattern,s+1,p+2);//匹配1个 else//str遍历结束或者不相等 return matchP(str,pattern,s,p+2); } //如果后面不是*,或者pattern遍历到最后一个了 if(s!=str.length && (str[s]==pattern[p]||pattern[p]=='.')) return matchP(str,pattern,s+1,p+1); return false; } }