本文共 678 字,大约阅读时间需要 2 分钟。
题目描述
给定两个字符串str1和str2,输出两个字符串的最长公共子串,如果最长公共子串为空,输出-1。 输入描述: 输入包括两行,第一行代表字符串srr1,第二行代表字符串str2。\left( 1\leq length(str1),length(str2) \leq 5000 \right)(1≤length(str1),length(str2)≤5000) 输出描述: 输出包括一行,代表最长公共子串。 示例1 输入 复制 1AB2345CD 12345EF 输出 复制 2345 备注: 时间复杂度O(n^{2})O(n 2 ),额外空间复杂度O(1)O(1)。(n可以为其中任意一个字符串长度)#include#include #include using namespace std;int main(void) { string s1,s2; cin>> s1>>s2; int n=s1.size(),m = s2.size(); int dp[n][m]; //dp[i,j] = dp[0][0] = s1[0] == s2[0]; for (int i=1;i len) { len = dp[i][j],end = i; } } } if (len == 0) { cout<< "-1"<
转载地址:http://muyzi.baihongyu.com/