面试经典150题 P97 交错字符串
时间轴
2025-12-16
init
题目:
设$ \texttt{dp[i][j]}\ $表示 $ \texttt{s1[0..=i-1]}$(其中 $1 \leq i \leq \texttt{s1.length()}$)和 $\texttt{s2[0..=j-1]}$(其中 $1 \leq j \leq \texttt{s2.length()}$)能交错组成 $\texttt{s3[0..=i+j-1]}$。$dp[0][0]$ 表示 $\texttt{s1}$、$\texttt{s2}$ 和 $\texttt{s3}$ 均取空字符串。
$$
\texttt{ dp[0][0] = true} \
$$
- 只考虑 s1, 即
s1[0..=i-1]能否交错组成s3[0..i-1],显然
$$
\texttt{dp[i][0] = dp[i-1][0] && (s3[i - 1] == s1[i- 1]);} \
$$
- 同理,只考虑 s2 有:
$$
\texttt{dp[0][j] = dp[0][j-1] && (s3[j - 1] == s2[j- 1]);} \
$$
- 同时考虑 s1 和 s2 有:
$$
\texttt{from_s1 = dp[i-1][j] && (s1[i-1] == s3[i+j-1]);} \
$$
$$
\texttt{from_s2 = dp[i][j-1] && (s2[j-1] == s3[i+j-1]);} \
$$
$$
\texttt{dp[i][j] = from_s1 || from_s2;} \
$$
1 |
|
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 常想一二,不思八九!
评论