华为oj 查找两个字符串a,b中的最长公共子串

来源:互联网 发布:淘宝客组件推广教程 编辑:程序博客网 时间:2024/04/29 21:56
#include<iostream>#include<string>using namespace std;void getMaxSub(string a,string b){int len1 = a.length();int len2 = b.length();int maxlen = 0;int mstart = 0,mend = 0;for(int i = 0; i<len1;i++){for(int j= 0;j<len2;j++){if(a[i]==b[j])            {            int temp = 1;            int temps = i;            int next1 = i+1;int next2 = j+1;while(next1<len1&&next2<len2){ if(a[next1]==b[next2]) {     ++temp;     ++next1;     ++next2; } else     break;} if(temp>maxlen){ maxlen = temp; mstart = temps; mend = mstart + maxlen-1; }            }}}if(maxlen>0){    for(int k = mstart;k<=mend;k++)    {   cout<<a[k];    }    cout<<endl;    }}int main(){string a,b;cin>>a>>b;getMaxSub(a,b); return 0;}

0 0