wildcard matching


Problem Description
这种题,就是男默女泪。超时。
大致思路如下:

  1. 如果string和pattern都是空,直接返回true
  2. 比较string和pattern的第一个字符,如果pattern的第一个字符不等于 ‘*’,则比较该字符和string中得第一个字符
  3. 如果pattern的第一个字符等于 ‘*’,则一点一点对string做subtring() 操作并比较
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public boolean (String s, String p) {

if (s.length() == 0 && p.length() == 0)
return true;
if (p.length() == 0)
return false;
char c = p.charAt(0);
if (s.length() != 0 && (c == '?' || c == s.charAt(0)))
return isMatch(s.substring(1), p.substring(1));
if (c == '*') {
for (int i = 0; i <= s.length(); ++i) {
String strLeft = s.substring(i);
if (isMatch(strLeft, p.substring(1)))
return true;
}
}
return false;
}