輸入兩個字符串輸出描述:
返回重復出現的字符輸入例子:
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解法。
新聞熱點
疑難解答