LeetCode Interleaving String(动态规划)
来源:互联网 发布:主题之家软件下载 编辑:程序博客网 时间:2024/04/28 02:50
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.
题意:给出字符串s1,s2,s3,问s3是否能用s1和s2的元素交叉构成
思路:用f(i,j)表示用字符串s1(1..i)和s2(1..j)是否可以组成 s3(1..i+j)
如果s1(i)==s3(i+j),有f(i,j)=f(i - 1,j)
如果s2(j)==s3(i+j),有f(i,j)=f(i,j-1)
具体代码如下:
public class Solution{ public boolean isInterleave(String s1, String s2, String s3) { int len1 = s1.length(), len2 = s2.length(), len3 = s3.length(); if (len1 + len2 != len3) return false; if (len1 == 0) return s2.compareTo(s3) == 0; else if (len2 == 0) return s1.compareTo(s3) == 0; boolean[][] dp = new boolean[len1 + 1][len2 + 1]; dp[0][0] = true; for (int i = 1; i <= len1; i++) { dp[i][0] = s1.charAt(i - 1) == s3.charAt(i - 1) && dp[i - 1][0]; } for (int i = 1; i <= len2; i++) { dp[0][i] = s2.charAt(i - 1) == s3.charAt(i - 1) && dp[0][i - 1]; } for (int i = 1; i <= len1; i++) { for (int j = 1; j <= len2; j++) { dp[i][j] = (s1.charAt(i - 1) == s3.charAt(i + j - 1) && dp[i - 1][j]) || (s2.charAt(j - 1) == s3.charAt(i + j - 1) && dp[i][j - 1]); } } return dp[len1][len2]; }}
0 0
- LeetCode Interleaving String(动态规划)
- LeetCode(97) Interleaving String(动态规划)
- leetcode 97. Interleaving String [动态规划]
- [LeetCode P97] Interleaving String动态规划
- leetcode:Interleaving String 使用动态规划求解的java源代码
- [算法作业-动态规划][LeetCode] 97. Interleaving String
- Interleaving String (字符串组合,动态规划) 【leetcoode】
- 【动态规划+滚动数组】Interleaving String
- 13.6—动态规划—Interleaving String
- 【leetcode】97. Interleaving String【java】动态规划,并有详细解释
- Interleaving String(动态规划求字符重构)
- 97.Interleaving String (二维动态规划,没想明白)
- LeetCode: Interleaving String
- LeetCode Interleaving String
- LeetCode: Interleaving String
- [Leetcode] Interleaving String
- [LeetCode] Interleaving String
- leetcode 68: Interleaving String
- UGUI如何屏蔽emoji表情
- 只读设置与同步设置
- c++ 关于字符串处理函数的整理
- hihocoder 1080 线段树:区间加法&赋值
- Android基础——初学者必知的AIDL在应用层上的Binder机制
- LeetCode Interleaving String(动态规划)
- mongotemplate mongodb的各种操作 模糊查询 精确查询 等等
- HDU - 1356 The Balance(拓展欧几里得算法的解空间结构)
- 部署并启动Tomcat
- 520BadGateway错误解决办法
- images can't contain alpha channels or transparencies
- 在原有的导包后面加 .* 是什么意思?
- onSaveInstanceState方法会在什么时候被执行
- 贝叶斯算法