- Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain_1.rb
28 lines (24 loc) · 721 Bytes
/
main_1.rb
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
# iterative
#
# # @param {String} s
# # @param {String} p
# # @return {Boolean}
defis_match(s,p)
s_len=s.size + 1
p_len=p.size + 1
dp=Array.new(p_len){Array.new(s_len,false)}
dp[0][0]=true
(2...p_len).eachdo |i|
dp[i][0]=p[i - 1] == '*' && dp[i - 2][0]
end
(1...p_len).eachdo |i|
(1...s_len).eachdo |j|
dp[i][j]=ifp[i - 1] == '*'
dp[i - 2][j] || ((dp[i - 2][j - 1] || dp[i][j - 1]) && (p[i - 2] == '.' || p[i - 2] == s[j - 1]))
else
dp[i - 1][j - 1] && (p[i - 1] == '.' || p[i - 1] == s[j - 1])
end
end
end
dp[p.size][s.size]
end