同步操作将从 wangjili/Algorithm 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
package lintcode.dp;/*** 交叉字符串,* Created by Dell on 2017年08月29日.*/public class InterLeave {//s3是否由s1,s2组成//dp矩阵由s1,s2,加上""组成//dp[i][j]表示使用前i,j个字符能否构成s3//状态转移方程是public boolean isInterleave(String s1, String s2, String s3) {//s1或s2可能是空串if(s1==null||s1.equals("")){return s3.equals(s2);}if(s2==null||s2.equals("")){return s3.equals(s1);}//加上对长度的校验,否则后面的计算会数组越界if(s3.length()!=(s1.length()+s2.length())){return false;}// write your code herechar[] c1=s1.toCharArray();char[] c2=s2.toCharArray();char[] c3=s3.toCharArray();boolean[][] dp=new boolean[s1.length()+1][s2.length()+1];//初始化第一行dp[0][0]=true;for(int j=1;j<dp[0].length;j++){if(dp[0][j-1]){dp[0][j]=c3[j-1]==c2[j-1];}}//初始化第一列for(int i=1;i<dp.length;i++){if(dp[i-1][0]){dp[i][0]=c3[i-1]==c1[i-1];}}for(int i=1;i<dp.length;i++){for(int j=1;j<dp[0].length;j++){//dp[i][j]值来自上方或左方if(dp[i-1][j]||dp[i][j-1]) {dp[i][j] = c3[i + j - 1] == (dp[i - 1][j] ? c1[i - 1] : c2[j - 1]);//状态转移方程,这错了,因为dp[i][j-1]可能为false}}}return dp[s1.length()][s2.length()];}// for(int i=0;i<dp.length;i++){// for(int j=0;j<dp[0].length;j++){// System.out.print(dp[i][j]+" ");// }// System.out.println();// }}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。