Regular Expression Matching[leetcode]直接匹配和DP
2014-09-14 14:10
525 查看
直接匹配
DP
dp(i,j)代表s[0...i-1]和p[0...j-1]的是否匹配
基本情况:
dp(0,0) = true
dp(i,0) = false
dp(0,j) = p[j-1] == 0 && dp(0,j-2) ==>p为a*b*这样的情况
一般情况dp(i,j):
1. dp(i-1,j-1) && ( s[i-1] == p[j-1] || p[j-1] == '.')
2. dp(i-1,j) && p[j-1]=='*' && ( s[i-1] == p[j-2] || p[j-2] == '.')
3. dp(i,j-1) && p[j-1]=='*' && ( s[i-1] == p[j-2] || p[j-2] == '.')
2,3合起来可以模拟a*匹配多个a的情况,也可以用 dp(i-1,j) || dp(i-2,j) || ....模拟
4. dp(i,j-2) && p[j-1]=='*'
a*匹配空字符串
bool isMatch(const char *s, const char *p) { if (p[0] == '\0') return s[0] == '\0'; if (strlen(p) > 1 && p[1] == '*') { if (isMatch(s, p+2)) return true; while(s[0] != '\0' && (s[0] == p[0] || p[0] == '.')) { if (isMatch(++s, p+2)) return true; } return false; } if (s[0] != '\0' && (s[0] == p[0] || p[0] == '.')) return isMatch(++s, ++p); return false; }
DP
dp(i,j)代表s[0...i-1]和p[0...j-1]的是否匹配
基本情况:
dp(0,0) = true
dp(i,0) = false
dp(0,j) = p[j-1] == 0 && dp(0,j-2) ==>p为a*b*这样的情况
一般情况dp(i,j):
1. dp(i-1,j-1) && ( s[i-1] == p[j-1] || p[j-1] == '.')
2. dp(i-1,j) && p[j-1]=='*' && ( s[i-1] == p[j-2] || p[j-2] == '.')
3. dp(i,j-1) && p[j-1]=='*' && ( s[i-1] == p[j-2] || p[j-2] == '.')
2,3合起来可以模拟a*匹配多个a的情况,也可以用 dp(i-1,j) || dp(i-2,j) || ....模拟
4. dp(i,j-2) && p[j-1]=='*'
a*匹配空字符串
相关文章推荐
- LeetCode-Regular Expression Matching-正则匹配-DP
- leetcode 10 Regular Expression Matching(简单正则表达式匹配)
- [leetcode]Regular Expression Matching(正则表达式的匹配)
- LeetCode--Regular Expression Matching 正则表达式匹配
- LeetCode 面试题 Regular expression matching(正则匹配)
- [Leetcode] Regular expression matching 正则表达式匹配
- leetcode -- Regular Expression Matching -- dp 重点
- leetcode Wildcard Matching ,Regular Expression Matching (正则表达式匹配和通配符匹配)
- [LeetCode]—Regular Expression Matching 正则匹配
- LeetCode 10 Regular Expression Matching 正则匹配
- leetcode 10 Regular Expression Matching(简单正则表达式匹配)
- Leetcode Regular Expression Matching O(n^2) DP
- LeetCode 10 Regular Expression Matching (正则表达式匹配)
- 【Leetcode】Regular Expression Matching (DP)
- [LeetCode] Regular Expression Matching 正则表达式匹配
- 判断正则表达式是否匹配 Regular Expression Matching @LeetCode
- Wildcard Matching[leetcode]直接匹配和DP
- 正则表达式匹配-leetcode Regular Expression Matching
- [DP] LeetCode Regular Expression Matching
- leetcode(10) - Regular Expression Matching 正则表达式匹配