当前位置:首页 > 未命名 > 正文内容

交叉队列

淙嶙6年前 (2020-07-22)未命名1656

描述


给出三个队列 s1,s2,s3 ,判断 s3 是否是由 s1 和 s2 交叉得来。
如:s1 为 aabcc , s2 为 dbbca。
当 s3 为 aadbbcbcac 时,返回 true(即将 s1 拆成三部分: aa,bc,c 分别插入 s2 对应位置)
否则返回 false。


输入


aabcc,dbbca,aadbbcbcac


输出


true


输入样例

aabcc,dbbca,aadbbcbcac
aabcc,dbbca,aadbbbaccc
a,b,ab
a,b,ba
a,b,ac
abc,bca,bcaabc
abc,bca,aabbcc

输出样例

true
false
true
true
false
true
false

private static String solution(String line) {
    // 在此处理单行数据
   String[] a = line.split(",");
String sub1=a[0];
String sub2=a[1];
String mainStr=a[2];
int result = analyzeString(mainStr,sub1,sub2);
if(result == 0){
return "true";
}
   return "false";
}
private static int analyzeString(String str,String subStr1,String subStr2){
if(str.length()==1 && (str.equals(subStr1) || str.equals(subStr2))){
return 0;
}
int remainLen = str.length();
if(subStr1.length() > 0){
String s = String.valueOf(subStr1.charAt(0));
if(str.startsWith(s)){
remainLen = Math.min(remainLen, analyzeString(str.substring(1),subStr1.substring(1),subStr2));
}
}
if(subStr2.length() > 0){
String s = String.valueOf(subStr2.charAt(0));
if(str.startsWith(s)){
remainLen = Math.min(remainLen, analyzeString(str.substring(1),subStr1,subStr2.substring(1)));
}
}
return remainLen;
}

相关文章

移除 K 位得到最小值

移除 K 位得到最小值

描述 有一行由正数组成的数字字符串,移除其中的 K 个数,使剩下的数字是所有可能中最小的。假设: 字符串的长度一定大于等于 K 字符串不会以 0 开头 输入 一行由正整数组成的数字字...

分库分表需要考虑的问题及方案

分库分表需要考虑的问题及方案

为什么要分库分表?解决单一数据库的性能问题。(通过分摊的思想解决独抗性能问题,分而治之)不管说是一个数据库还是说一台服务器,(CPU,磁盘,内存,IO)性能终究又上限,而使用中或预计使用中又达到了这个...

生成SSH秘钥

生成SSH秘钥

SSH是建立在应用层和传输层基础上的安全协议,其目的是专为远程登录会话和其他网络服务提供安全性的保障,用过SSH远程登录的人都比较熟悉,可以认为SSH是一种安全的Shell。Http登录是需要用户名和...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。