题解 | #查找两个字符串a,b中的最长公共子串#
查找两个字符串a,b中的最长公共子串
https://www.nowcoder.com/practice/181a1a71c7574266ad07f9739f791506
#include <cstring> #include <iostream> using namespace std; int main(){ string s1,s2; std::cin >> s1 >> s2; if(s1.size()>s2.size()){ swap(s1, s2); } int m = s1.size(),n=s2.size(); int f[m+1][n+1]; int posx=0,posy=0; memset(f,0,sizeof(int)*(m+1)*(n+1)); for(int i=1;i<=m;i++){ for(int j=1;j<=n;j++){ if(s1[i-1]==s2[j-1]){ if(f[i-1][j-1]){ f[i][j]=f[i-1][j-1]+1; }else{ f[i][j]=1; } } if(f[i][j]>f[posx][posy]){ posx=i;posy=j; } } } string res = s1.substr(posx-f[posx][posy],f[posx][posy]); std::cout << res; return 0; }#23届找工作求助阵地#