[Leetcode] 44. Wildcard Matching
2017-08-27 16:02
363 查看
Implement wildcard pattern matching with support for
动态规划。假设dp[i][j]表示的是s[0...i-1]和p[0...j-1]的匹配状况(true or false),那么状态转移方程如下:
1) dp[i][j] = d[i-1][j-1] or dp[i][j-1] or dp[i-1][j] (if p[j-1] == '*') '*'匹配了1或0或n个字符
2) dp[i][j] = d[i-1][j-1] (if p[i-1] == '?') '?'匹配了一个字符s[i-1]
3) dp[i][j] = d[i-1][j-1] and s[i-1] == p[j-1]
边界条件是:
dp[0][0] = True
dp[i][0] = False
dp[0][j] = dp[0][j-1] if p[j-1] == '*'
code:
'?'and
'*'.
'?' Matches any single character.'*' Matches any sequence of characters (including the empty sequence).
The matching should cover the entire input string (not partial).
The function prototype should be:
bool isMatch(const char *s, const char *p)
Some examples:
isMatch("aa","a") → false
isMatch("aa","aa") → true
isMatch("aaa","aa") → false
isMatch("aa", "*") → true
isMatch("aa", "a*") → true
isMatch("ab", "?*") → true
isMatch("aab", "c*a*b") → false
动态规划。假设dp[i][j]表示的是s[0...i-1]和p[0...j-1]的匹配状况(true or false),那么状态转移方程如下:
1) dp[i][j] = d[i-1][j-1] or dp[i][j-1] or dp[i-1][j] (if p[j-1] == '*') '*'匹配了1或0或n个字符
2) dp[i][j] = d[i-1][j-1] (if p[i-1] == '?') '?'匹配了一个字符s[i-1]
3) dp[i][j] = d[i-1][j-1] and s[i-1] == p[j-1]
边界条件是:
dp[0][0] = True
dp[i][0] = False
dp[0][j] = dp[0][j-1] if p[j-1] == '*'
code:
class Solution: def isMatch(self, s, p): """ :type s: str :type p: str :rtype: bool """ sl = len(s) pl = len(p) dp = [[False for j in range(pl+1)] for i in range(sl+1)] dp[0][0] = True for j in range(1,pl+1): if p[j-1] == '*': dp[0][j] = dp[0][j-1] for i in range(1,sl+1): for j in range(1,pl+1): if p[j-1] == '*': dp[i][j] = dp[i][j-1] or dp[i-1][j-1] or dp[i-1][j] elif p[j-1] == '?': dp[i][j] = dp[i-1][j-1] else: dp[i][j] = dp[i-1][j-1] and s[i-1] == p[j-1] return dp[sl][pl]
相关文章推荐
- Leetcode:44. Wildcard Matching
- Leetcode 44:Wildcard Matching
- LeetCode - 44 - Wildcard Matching(模式串匹配2
- LeetCode(44) Wildcard Matching
- leetCode 44.Wildcard Matching (通配符匹配) 解题思路和方法
- Leetcode 44. Wildcard Matching
- LeetCode_44---Wildcard Matching
- leetcode 44. Wildcard Matching (需要好好想一下)
- LeetCode 44 Wildcard Matching
- 【LeetCode】44. Wildcard Matching解法及注释
- Wildcard Matching_Leetcode_#44
- 44. Wildcard Matching Leetcode Python
- leetcode 44: Wildcard Matching
- (Java) LeetCode 44. Wildcard Matching —— 通配符匹配
- LeetCode 44. Wildcard Matching(通配符匹配)
- LeetCode 44.Wildcard Matching题目解析
- [Leetcode] 44. Wildcard Matching
- [leetcode]44. Wildcard Matching(Java)
- [Leetcode] 44. Wildcard Matching
- LeetCode 44. Wildcard Matching