1.题目
2.思路
首先字符串s.length()>0,或者判断s.isEmpty();
可以分两步走,第一部分主要讨论第一个正则符号的可能性,利用&&,||表达式
情况1:可能是字符,那就看第二个符号;pattern.charAt(0)==text.charAt(0);
情况2:如果是".",则也需要看第二个字符;pattern.charAt(0)=='.'
第二部分就是考虑第二个字符的可能性。(pattern.length()>2)
情况1:如果第二个字符是“*”(pattern.charAt(1)=='*'),则判断第一个正则表达式的字符到底是.还是字符。利用isMatch函数进行匹配first_match && isMatch(text.substring(1),pattern)
情况2:如果不是“*”,再看是否和text的文本匹配first_match&&isMatch(pattern.substring(1),text.substring(1))
3.代码
public class Solution {
public boolean isMatch(String text, String pattern) {
if(pattern.isEmpty()) return text.isEmpty();
boolean first_match=(!text.isEmpty() &&(pattern.charAt(0) == text.charAt(0) || pattern.charAt(0)=='.'));
if(pattern.length()>=2 && pattern.charAt(1)=='*'){
return (isMatch(text,pattern.substring(2))||
(first_match && isMatch(text.substring(1),pattern)));
}
else{
return first_match&&isMatch(pattern.substring(1),text.substring(1));
}
}
}