http://www.lintcode.com/en/problem/regular-expression-matching/
A classic Google Problem.
A classic matching dp.
the Dynamic Programming Elements:
1. state
dp i, j means first i of A matching with first j of B.
2. Init
dp i, 0 -> i == 0;
dp 0, j -> isEmpty(j)
3. Func
dp i, j =
if(B.chatAt(j) == '*') {
check if the Ai matches, then |= helper(i - 1, j)
and always we can do without Bj, so |= helper(i, j - 2)
} else {
Bj match Ai? then |= helper(i - 1, j - 1);
else false;
}
4. Answer
dp m, n
PS: dp size m + 1 by n + 1.
No comments:
Post a Comment