我會先思考題意 '.'表示一個a-z, '*'表示0或多個 a-z
s=aa, p=a 時會等於false, 因為既沒有'.'也沒有'*'就要完全符合
s=aa, p=a.時會等於true, 因為s=aa的第二個字符符合任意一個字母
s=aa, p=a*時會等於true, 因為s=aa的第二個字符符合任意多個字母
所以p長度>1在判別時一次都要抓p兩個字符
class Solution {
public boolean isMatch(String s, String p) {
System.out.println("s="+s);
System.out.println("p="+p);
if (p.isEmpty()) return s.isEmpty();
boolean first_match = (!s.isEmpty() &&
(p.charAt(0) == s.charAt(0) || p.charAt(0) == '.'));
if (p.length() >= 2 && p.charAt(1) == '*'){
return (isMatch(s, p.substring(2)) ||
(first_match && isMatch(s.substring(1), p)));
} else {
return first_match && isMatch(s.substring(1), p.substring(1));
}
}
}
留言列表