-
Notifications
You must be signed in to change notification settings - Fork 258
/
Copy path18.java
78 lines (44 loc) · 1.32 KB
/
18.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
class Solution {
public boolean isMatch(String s, String p) {
boolean dp[][] = new boolean[s.length()+1][p.length()+1];
dp[0][0] = true;
for(int j=1;j<=p.length();j++)
{
if(p.charAt(j-1)=='*'&&dp[0][j-2])
dp[0][j] = true;
}
for(int i=1;i<=s.length();i++)
{
for(int j=1;j<=p.length();j++)
{
if(s.charAt(i-1)==p.charAt(j-1))
{
dp[i][j] = dp[i-1][j-1];
}
else if(p.charAt(j-1)=='.')
{
dp[i][j] = dp[i-1][j-1];
}
else if(p.charAt(j-1)=='*')
{
if(j>=2)
{
if(s.charAt(i-1)==p.charAt(j-2)||p.charAt(j-2)=='.')
{
dp[i][j] = dp[i][j-1]||dp[i][j-2]||dp[i-1][j];
}
else
{
dp[i][j] = dp[i][j-2];
}
}
}
else
{
dp[i][j]=false;
}
}
}
return dp[s.length()][p.length()];
}
}