描述
该题来自于力扣第44题
分析
类似于leetcode题解10,同样使用动态规划来解,定义dp[i][j]为字符串s的前i位与字符串p的前j为匹配的结果,则dp[0][0]表示两个空串的比较,自然为True;对于i>=1和j>=1不难知道状态转移方程为
\[
dp[i][j] = \left\{
\begin{aligned} & dp[i-1][j-1] & p[j-1]=? \\
& dp[i-1][j] \quad \text{or} \quad
dp[i][j-1] & p[j-1]=* \\
& dp[i-1][j-1] \quad \text{and} \quad
s[i-1][j-1] & \text{others}
\end{aligned} \right.
\]
最后注意边界,主要是dp[0][j]这种情况。
代码
python
1 | class Solution: |