以下用给定的测试用例能过,但是在牛客网上就是过不了 (如有大神请指点一下)
【题目】
给定两个字符串str1和str2,返回两个字符串的最长公共子串
【举例】
String str1 = “1AB2345CD”;
String str2 = “12345EF”;
输出:2345
function text() {
var str1 = "1AB2345CD";
var str2 = "12345EF";
var index1 = 0;
var index2 = 0;
var indexOld2 = 0;
var str3 = [];
var str4 = '';
function aa() {
if (str2[index2] == str1[index1]) {
str4 = (str1[index1]);
if (index2 == ) {
return str3;
}
index1 += 1;
index2 += 1;
aa();
} else {
if (index2 == - 1) {
return str3;
}
if (index1 == - 1 && index2 != - 1) {
if ((str4) < 0) {
(str4);
str4 = '';
}
('---str3-1-', str3);
index2 += 1;
indexOld2 += 1;
index1 = 0
} else {
index2 = indexOld2;
index1 += 1;
}
aa();
}
}
var arr = aa();
var temp;
for (var i = 0; i < ; i++) {
for (var j = i + 1; j < ; j++) {
if (str3[i].length < str3[j].length) {
temp = str3[i];
str3[i] = str3[j];
str3[j] = temp;
}
}
}
if ( < 0) {
return -1;
}
if (str3[0].length < 0) {
return -1;
}
return str3[0]
}
text();
我的思路是 用两个变量,当做指针,然后循环的查找,将找到的子串放到一个数组中,最后再给数组排个序,第一个就是长度最大的公共子串