在EOJ中的Problem #1805中,寻找两个string的LCS。
题目要求如下:
给你 2 个字符串(可能包括数字以及标点),长度不超过 50124,请你求出最长的连续的公共子序列。
输入格式
输入有 2 个字符串 A,B,各占一行。
输出格式
输出字符串 A和 B的最长连续公共子序列的长度 L。
Demo自测没有问题,但在Test 2会报错,不知道问题在哪儿。。。请教。Demo如下
#include <bits/stdc++.h>
using namespace std;
int main() {
int i, j, len1, len2;
string str, str1, str2;
cin >> str1 >> str2;
len1 = str1.length();
len2 = str2.length();
if(str1 > str2) {
swap(str1, str2);
swap(len1, len2);
}
for(i = len2; i >= 0; i--) {
for(j = 0; j < len2 - 1; j++) {
if(j + i > len2) {
break;
}
str = str2.substr(j, j + i);
if(str1.find(str) != -1) {
cout << i << endl;