补充文章内容
This commit is contained in:
parent
ea2bb6188c
commit
8c0dd58bed
@ -2,7 +2,7 @@
|
||||
title: 两字符串系列DP问题归纳
|
||||
description: 两字符串二维DP系列问题
|
||||
date: 2025-08-31T21:50:00+08:00
|
||||
lastmod: 2025-08-31T21:51:00+08:00
|
||||
lastmod: 2025-09-02T00:39:00+08:00
|
||||
slug: 子序列dp
|
||||
# image: helena-hertz-wWZzXlDpMog-unsplash.jpg
|
||||
categories:
|
||||
@ -156,3 +156,26 @@ $dp[0][j] = 0$,$dp[i][0] = 0$。
|
||||
- `dp[i][0] = (dp[i-1][0] && s1[i-1] == s3[i-1]) `,1 <= i <= m。
|
||||
- `dp[0][j] = (dp[0][j-1] && s2[j-1] == s3[j-1]) `,1 <= j <= n。
|
||||
- <strong>必须检查:</strong>如果`s1.size() + s2.size() != s3.size()`,则直接`return false`。
|
||||
|
||||
# 通配符匹配
|
||||
|
||||
给你一个输入字符串 (`s`) 和一个字符模式 (`p`) ,请你实现一个支持 `'?'` 和 `'*'` 匹配规则的通配符匹配:
|
||||
|
||||
- `'?'` 可以匹配任何单个字符。
|
||||
- `'*'` 可以匹配任意字符序列(包括空字符序列)。
|
||||
|
||||
判定匹配成功的充要条件是:字符模式必须能够 **完全匹配** 输入字符串(而不是部分匹配)。
|
||||
|
||||
## DP公式
|
||||
|
||||
`dp[i][j]`代表的是`s[0..i-1]`和`p[0..j-1]`能否匹配(`bool`类型)。
|
||||
|
||||
- 如果 $p[j-1] = '?'$ 或者 $p[j-1] = s[i-1]$,则 $dp[i][j] = dp[i-1][j-1]$。
|
||||
- 如果 $p[j-1] = '*'$,则 $dp[i][j] = dp[i-1][j]\ ||\ dp[i][j-1]$。
|
||||
- 其他情况下,$dp[i][j] = false$。
|
||||
|
||||
## 边界条件
|
||||
|
||||
- `dp[0][0] = true`,表示空字符串可以匹配空字符串。
|
||||
- `dp[i][0] = false`,1 <= i <= m,表示在非空字符串中匹配空字符串,显然不可能。
|
||||
- `dp[0][j]`为`true`当且仅当`p[0..j-1]`中全是`'*'`,1 <= j <= n。
|
Loading…
x
Reference in New Issue
Block a user