输入两个字符串输出描述:
返回重复出现的字符输入例子:
abcdefghijklmnopabcsafjklmnopqrstuvw输出例子:
jklmnop暴力枚举,从最长的子串开始找,是的直接跳出输出,一定是最长而且第一个出現的公共子串。#include <iostream>using namespace std;int main(){ string str1,str2; while(cin>>str1>>str2){ int size1=str1.size(); int size2=str2.size(); string maxSubstr; if(size1<=size2){ for(int len=size1;len>0;len--){ for(int i=0;i<=size1-len;i++){ string subStr=str1.substr(i,len); if(str2.find(subStr)!=string::npos){ maxSubstr=subStr; goto MAXSTR; } } } } else{ for(int len=size2;len>0;len--){ for(int i=0;i<=size2-len;i++){ string subStr=str2.substr(i,len); if(str1.find(subStr)!=string::npos){ maxSubstr=subStr; goto MAXSTR; } } } }MAXSTR: cout<<maxSubstr<<endl; } return 0;}另外,这题是道经典的动态规划例题,先mark下,后面学习了再补DP解法。
新闻热点
疑难解答