Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2.
For example
Given:
s1 = "aabcc",
s2 = "dbbca",
When s3 = "aadbbcbcac", return true.
When s3 = "aadbbbaccc", return false.
描述
判断字符串 s3 是否由 s1 与 s2 交错组成(不一定按固定间隔交错)
分析
用动态规划的思想,以一个二维数组来存储判断信息

假设下标从 1 开始:f[i][j] 其中 i 代表 s1 字符串中选取的字符数,j 代表 s2 字符串中选取的字符数f[i][j] 为 true 时,代表 s3 长度为 i + j 时符合题意
判断 f[i][j] 是否为 true 时,要求其满足:
s1取第i个字符进行判断,当s3[i + j] == s1[i]时,再判断之前的i - 1 + j个字符是否符合条件,即f[i - 1][j]是否为trues2取第j个字符进行判断,当s3[i + j] == s2[j]时,再判断之前的i + j - 1个字符是否符合条件,即f[i][j - 1]是否为true
代码
1 | public class Solution { |