三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的
来源:互联网 发布:软件研发部门规划 编辑:程序博客网 时间:2024/05/16 01:43
三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的(如同归并排序两个有序数组合并为一个有序数组这样的交错)
package edu.ccnu;import java.util.Scanner;/** * 现有三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的 * @author MLee * */public class IsInterleave { public static boolean isInterleave(String s1, String s2, String s3){ int len1 = s1.length(); int len2 = s2.length(); int len3 = s3.length(); if((len1 + len2) != len3){ // 长度不一致,则显然不可能 return false; } // dp[i][j]表示s3[1,len1+len2]是否由s1[1,len1]和s2[1,len2]交错组成 boolean[][] dp = new boolean[len1+1][len2+1]; dp[0][0] = true; // 空串与空串交错组成空串 for(int i = 0; i < len1+1; i++){ for(int j = 0; j < len2+1; j++){ if((i-1) >= 0 && dp[i-1][j] && s1.charAt(i-1) == s3.charAt(i-1+j)){ // dp[i-1][j]=true表示s3[1, i-1+j]由s1[1,i-1]和s2[1,j]交错组成,如果s1.charAt(i-1)与s3.charAt(i-1+j)相等,那么很显然dp[i][j]也为true dp[i][j] = true; } if((j-1) >= 0 && dp[i][j-1] && s2.charAt(j-1) == s3.charAt(i+j-1)){ // dp[i][j-1]=true表示s3[1, i+j-1]由s1[1,i]和s2[1,j-1]交错组成,如果s2.charAt(j-1)与s3.charAt(i+j-1)相等,那么很显然dp[i][j]也为true dp[i][j] = true; } // 除以上两种情况外,dp[i][j]为false } } return dp[len1][len2]; } public static void main(String[] args){ Scanner sc = new Scanner(System.in); System.out.print("> "); String s1 = sc.next(); System.out.print("> "); String s2 = sc.next(); System.out.print("> "); String s3 = sc.next(); System.out.println(isInterleave(s1, s2, s3)); sc.close(); }}
阅读全文
0 0
- 三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的
- 判断s3字符串是否由s1和s2交错组成
- 交叉字符串 给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。
- 给定s1,s2,s3,发现是否通过s1和s2的交错形成s3。
- S1 S2 S3 S4 S5
- String s1="abc"; s2="abc" s3= new String("abc")为啥s1和s2的地址值一样而s1和s3的就不一样呢?
- 电源的S1,S2,S3,S4,S5的含义
- 电源选项中S1,S2,S3,S4,S5的含义
- 算法检索一组数据是否存在s1<s3<s2的情况
- 电源选项中的S1,S2,S3,S4,S5
- 将s1,s2连接起来放到s3中
- ACPI电源管理中的S0 S1 S2 S3 S4 S5
- ACPI电源管理中的S0 S1 S2 S3 S4 S5
- ACPI电源管理中的S0 S1 S2 S3 S4 S5
- 字符串s2是否能由s1中的字符构成
- 判断字符串s2能否由s1旋转得到
- 字符串组合“S1+C1+S2+C2+S3”-欢聚时代笔试题
- 数组的创建 简写,NSArray *arrayX = @[s1, s2, s3] .可变数组不可用.
- OTT系统和IPTV系统不一样吗?有什么区别?
- 关于字符串
- 关于项目的一点点总结,签到返利日历的实现
- CAN通信中地址设置的问题
- $.Deferred(),for循环内异步请求问题的解决办法
- 三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的
- 1004: A+B(基本输入输出4)
- 【GDOI2018模拟9.23】动态图
- mysql忘记root密码如何解决(mac电脑)
- 关于AsyncTask的Executor的一些研究
- 1094: 【白书习题】数的反转
- latex: 改变图的caption Figure 1:为 Fig. 1.
- ffmpeg安装及简单使用
- CentOS 6.7安装Docker