Wildcard Matching
题目地址:
https://leetcode.com/problems/wildcard-matching/#/description
题目:
解题思路:
这道题就是用dynamic programming来解决。分两种情况来填表:是否为'*'。
代码:
https://leetcode.com/problems/wildcard-matching/#/description
题目:
Implement wildcard pattern matching with support for
'?' 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
解题思路:
这道题就是用dynamic programming来解决。分两种情况来填表:是否为'*'。
代码:
public boolean isMatch(String s, String p) { int m = s.length(); int n = p.length(); boolean[][] dp = new boolean[m + 1][n + 1]; dp[0][0] = true; for(int i = 1; i <= n; i++){ if(p.charAt(i - 1) == '*'){ dp[0][i] = true; } else{ break; } } for(int i = 1; i <= m; i++){ for(int j = 1; j <= n; j++){ if(p.charAt(j - 1) != '*'){ dp[i][j] = dp[i - 1][j - 1] && (s.charAt(i - 1) == p.charAt(j - 1) || p.charAt(j - 1) == '?'); } else{ dp[i][j] = dp[i - 1][j] || dp[i][j - 1]; } } } return dp[m][n]; }

Comments
Post a Comment