题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
#include <iostream> #include <string.h> #include <memory.h> using namespace std; int main() { string s1,s2,s; int t[310][310],len1,len2,i,j,ansx,ansl; cin>>s1>>s2; len1=s1.length(); len2=s2.length(); if(len1<len2){ s=s1; s1=s2; s2=s; } len1=s1.length(); len2=s2.length(); //cout<<s1<<endl<<s2; ansl=0; ansx=310; memset(t,0,sizeof(t)); for(i=1;i<=len1;i++){ for(j=1;j<=len2;j++){ if(s1[i-1]==s2[j-1]){ t[i][j]=t[i-1][j-1]+1; //cout<<i<<' '<<j<<' '<<t[i][j]<<endl; if(t[i][j]>ansl||(t[i][j]==ansl&&j<ansx)){ ansl=t[i][j]; ansx=j; } } } } //cout<<ansl<<' '<<ansx; for(i=ansx-ansl;i<ansx;i++){ cout<<s2[i]; } return 0; } // 64 位输出请用 printf("%lld")
妈妈我再懒得初始化我就去吃粑粑