leetCode 97. Interleaving String
2017-09-27 10:18
295 查看
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,每次从s1或者s2取出一个字符,判断是否最终能够组成s3
思路:用动态规划,从后面开始,右边的子串能够成功,左边才有可能成功
每次取字符选择s1,s2都有可能,即:
if(dp[i+1][j]==true&&s1.charAt(i)==s3.charAt(i+j)
||dp[i][j+1]==true&&s2.charAt(j)==s3.charAt(i+j)){
dp[i][j]=true;
}
For example,
Given:
s1 = “aabcc”,
s2 = “dbbca”,
When s3 = “aadbbcbcac”, return true.
When s3 = “aadbbbaccc”, return false.
给定s1,s2,每次从s1或者s2取出一个字符,判断是否最终能够组成s3
思路:用动态规划,从后面开始,右边的子串能够成功,左边才有可能成功
每次取字符选择s1,s2都有可能,即:
if(dp[i+1][j]==true&&s1.charAt(i)==s3.charAt(i+j)
||dp[i][j+1]==true&&s2.charAt(j)==s3.charAt(i+j)){
dp[i][j]=true;
}
public static boolean isInterleave(String s1, String s2, String s3) { if(s1.equals("")&&s2.equals("")&&s3.equals(""))return true; if(s1.length()+s2.length()!=s3.length()){ return false; } int m = s1.length(); int n= s2.length(); int z = s3.length(); if(m==0) return s2.equals(s3); if(n==0) return s1.equals(s3); boolean dp[][] = new boolean[m+1][n+1]; dp[m] =true; if(s1.charAt(m-1)==s3.charAt(m+n-1)) dp[m-1] = true; for(int i=m-2;i>=0;i--){ if(dp[i+1] ==false) dp[i] =false; else if(s1.charAt(i)==s3.charAt(i+n)){ dp[i] =true; } else dp[i] =false; } if(s2.charAt(n-1)==s3.charAt(m+n-1)) dp[m][n-1] = true; for(int i=n-2;i>=0;i--){ if(dp[m][i+1]==false) dp[m][i]=false; else if(s2.charAt(i)==s3.charAt(i+m)){ dp[m][i]=true; } else dp[m][i]=false; } for(int i=m-1;i>=0;i--){ for(int j=n-1;j>=0;j--){ if(dp[i+1][j]==false&&dp[i][j+1]==false){ dp[i][j]=false; } else if(dp[i+1][j]==true&&s1.charAt(i)==s3.charAt(i+j) ||dp[i][j+1]==true&&s2.charAt(j)==s3.charAt(i+j)){ dp[i][j]=true; } else dp[i][j]=false; } } return dp[0][0]; }
相关文章推荐
- Leetcode 97. Interleaving String
- [LeetCode]97.Interleaving String
- LeetCode 97. Interleaving String
- leetcode - 97.Interleaving String
- Leetcode:97. Interleaving String
- [LeetCode] 97. Interleaving String
- leetcode 97.Interleaving String
- [LeetCode]97. Interleaving String
- [LeetCode] 97. Interleaving String
- [Leetcode]@python 97. Interleaving String
- [LeetCode]97. Interleaving String
- [Leetcode] 97. Interleaving String
- LeetCode 97. Interleaving String
- [Leetcode] 97. Interleaving String 解题报告
- [leetcode] 97.Interleaving String
- Leetcode 97. Interleaving String
- [算法作业-动态规划][LeetCode] 97. Interleaving String
- Leetcode 97. Interleaving String
- 个人记录-LeetCode 97. Interleaving String
- LeetCode 97. Interleaving String