三个字符串s1, s2, s3, 现要求你判断s3是否由s1和s2交错组成的
2017-09-26 12:07
323 查看
三个字符串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(); } }
相关文章推荐
- 判断s3字符串是否由s1和s2交错组成
- 交叉字符串 给出三个字符串:s1、s2、s3,判断s3是否由s1和s2交叉构成。
- 97. Interleaving String *HARD* -- 判断s3是否为s1和s2交叉得到的字符串
- 给定s1,s2,s3,发现是否通过s1和s2的交错形成s3。
- 给定两个字符串s1,s2,要求判定s2是否能够被s1做循环移位得到的字符串包含。
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回0.
- java 编写 输入三个边长 判断是否组成三角行 若能组成三角行 求面积
- 判断一个字符串是否为另外一个字符串旋转之后的字符串。 例如:给定s1 = AABCD和s2 = BCDAA,返回1,给定s1=abcd和s2=ACBD,返回
- 2012 Multi-University Training Contest 3:Triangle LOVE_判断有向图中是否含有仅由三个点组成的环
- 经典算法面试题目-判断s2是否是s1的旋转字符串(1.8)
- 动态规划-请编写一个高效算法,判断C串是否由A和B交错组成。
- 判断一个点是否在三个点组成的三角形内 java 代码 面试经典
- 判断两个字符串s1 s2所含字符是否相同
- 输入任意大小的三个整数,判断其中是否有两个奇数一个偶数。若是,则输出“YES”,不是则输出“NOT” (要求用条件表达式进行判断,不使用if语句)
- 给定两个字符串s1,s2,请编写代码检查s2是否为s1旋转而成
- 我要学C#语言程序设计【解题篇】(二):输入三个整数,判断是否能够组成三角形
- 翻转子串 假定我们都知道非常高效的算法来检查一个单词是否为其他字符串的子串。请将这个算法编写成一个函数,给定两个字符串s1和s2,请编写代码检查s2是否为s1旋转而成,要求只能调用一次检查子串的函数。
- cci-Q1.8 调用一次子字符串判断确认s2是否为s1的旋转字符
- 判断三个数是否能够组成一个三角形