字符串的交错组成
来源:互联网 发布:室内设计软件培训 编辑:程序博客网 时间:2024/05/18 02:38
//字符串的交错组成public class IsCross{ //经典的动态规划 public static boolean isCross01(String str1,String str2,String aim) { if(str1==null||str2==null||aim==null) { return false; } //将字符串转换成数组 char[]ch1=str1.toCharArray(); char[]ch2=str2.toCharArray(); char[]chaim=aim.toCharArray(); if(chaim.length!=ch1.length+ch2.length) { return false; } //构建动态规划表(dp[i][j]表示用ch[0..i-1]和ch2[0..j-1]能否表示aim[i+j-1]) boolean[][]dp=new boolean[ch1.length+1][ch2.length+1]; dp[0][0]=true; //第一列的计算 for(int i=1;i<=ch1.length;i++) { if(ch1[i-1]!=chaim[i-1]) { break; } dp[i][0]=true; } //第一行的计算 for(int j=1;j<=ch2.length;j++) { if(ch2[j-1]!=chaim[j-1]) { break; } dp[0][j]=true; } for(int i=1;i<=ch1.length;i++) { for(int j=1;j<=ch2.length;j++) { if((ch1[i-1]==chaim[i+j-1]&&dp[i-1][j])|| (ch2[j-1]==chaim[i+j-1]&&dp[i][j-1])) { dp[i][j]=true; } } } return dp[ch1.length][ch2.length]; } //动态规划的空间压缩法(滚动法) public static boolean isCross02(String str1,String str2,String aim) { if(str1==null||str2==null||aim==null) { return false; } //字符串转换成数组 char[]ch1=str1.toCharArray(); char[]ch2=str2.toCharArray(); char[]chaim=aim.toCharArray(); if(chaim.length!=ch1.length+ch2.length) { return false; } char[]longs=ch1.length>=ch2.length?ch1:ch2;//长数组 char[]shorts=ch1.length<ch2.length?ch1:ch2; //短数组 //构造滚动数组 boolean []dp=new boolean[shorts.length+1]; dp[0]=true; for(int i=1;i<=shorts.length;i++) { if(shorts[i-1]!=chaim[i-1]) { break; } dp[i]=true; } for(int i=1;i<=longs.length;i++) { dp[0]=dp[0]&&longs[i-1]==chaim[i-1]; for(int j=1;j<=shorts.length;j++) { if((longs[i-1]==chaim[i+j-1]&&dp[j])|| (shorts[j-1]==chaim[i+j-1]&&dp[j-1]) ) { dp[j]=true; } else { dp[j]=false; } } } return dp[shorts.length]; }public static void main(String[]args){ String str1="AB"; String str2="12"; String aim="AB12"; System.out.println(isCross01(str1,str2,aim)); System.out.println(isCross02(str1,str2,aim));}}
阅读全文
0 0
- 字符串的交错组成
- 字符串的交错组成
- 字符串的交错组成
- 字符串的交错组成 动态规划
- 字符串交错组成
- 字符串交错组成
- 字符串交错组成
- [编程题]字符串交错组成
- 字符串交错组成--很优美的递归算法
- 递归与动态规划---字符串的交错组成
- 动态规划——字符串的交错组成
- 字符串交错组成(动态规划)
- 字符串交错组成(递归 or DP)
- 动态规划解决字符串交错组成问题
- #牛客#代码实现:字符串的匹配、字符串的交错组成、纸牌博弈、表达式组合
- 动态规划——字符串的交错组成(interleaving-string)
- 判断s3字符串是否由s1和s2交错组成
- 三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的
- js实现pc端页面的手势滑动
- [BZOJ]2734 [HNOI2012] 集合选数 状压DP 思路神题
- js延迟加载
- Java8 中的接口
- C#连接sql数据库两种方法
- 字符串的交错组成
- 基础语言要素
- Android BLE 操作
- Java中数值类型之间的转换
- Mac端 查看QQ下载的视频路径
- 2017_12_15 js获取项目路径,js调用问题,jsp获取js传递url中参数
- SpringCloud(第 052 篇)CentOS7 安装 Docker 以及常用操作命令讲解
- 使用react时的ajax传参问题
- this作用域