close

我會先思考題意 '.'表示一個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));
        }
    }
}

arrow
arrow
    文章標籤
    LeetcCde java
    全站熱搜

    程式小試身手 發表在 痞客邦 留言(0) 人氣()