#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
int longestCommonSubstring(string str1, string str2) {
int n = str1.length();
int m = str2.length();
// Create a (n+1) x (m+1) DP table initialized to 0
vector<vector<int>> dp(n + 1, vector<int>(m + 1, 0));
int maxLength = 0; // To store the length of the longest common substring
// Fill the table
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= m; ++j) {
if (str1[i - 1] == str2[j - 1]) {
// Characters match, extend the substring
dp[i][j] = 1 + dp[i - 1][j - 1];
maxLength = max(maxLength, dp[i][j]);
} else {
// Characters don't match, reset
dp[i][j] = 0;
}
}
}
return maxLength;
}
int main() {
string str1 = "abcdxyz";
string str2 = "xyzabcd";
cout << "Length of Longest Common Substring: " << longestCommonSubstring(str1, str2) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGxvbmdlc3RDb21tb25TdWJzdHJpbmcoc3RyaW5nIHN0cjEsIHN0cmluZyBzdHIyKSB7CiAgICBpbnQgbiA9IHN0cjEubGVuZ3RoKCk7CiAgICBpbnQgbSA9IHN0cjIubGVuZ3RoKCk7CiAgICAKICAgIC8vIENyZWF0ZSBhIChuKzEpIHggKG0rMSkgRFAgdGFibGUgaW5pdGlhbGl6ZWQgdG8gMAogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBkcChuICsgMSwgdmVjdG9yPGludD4obSArIDEsIDApKTsKICAgIAogICAgaW50IG1heExlbmd0aCA9IDA7ICAvLyBUbyBzdG9yZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGNvbW1vbiBzdWJzdHJpbmcKCiAgICAvLyBGaWxsIHRoZSB0YWJsZQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgKytpKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbTsgKytqKSB7CiAgICAgICAgICAgIGlmIChzdHIxW2kgLSAxXSA9PSBzdHIyW2ogLSAxXSkgewogICAgICAgICAgICAgICAgLy8gQ2hhcmFjdGVycyBtYXRjaCwgZXh0ZW5kIHRoZSBzdWJzdHJpbmcKICAgICAgICAgICAgICAgIGRwW2ldW2pdID0gMSArIGRwW2kgLSAxXVtqIC0gMV07CiAgICAgICAgICAgICAgICBtYXhMZW5ndGggPSBtYXgobWF4TGVuZ3RoLCBkcFtpXVtqXSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAvLyBDaGFyYWN0ZXJzIGRvbid0IG1hdGNoLCByZXNldAogICAgICAgICAgICAgICAgZHBbaV1bal0gPSAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiBtYXhMZW5ndGg7Cn0KCmludCBtYWluKCkgewogICAgc3RyaW5nIHN0cjEgPSAiYWJjZHh5eiI7CiAgICBzdHJpbmcgc3RyMiA9ICJ4eXphYmNkIjsKICAgIGNvdXQgPDwgIkxlbmd0aCBvZiBMb25nZXN0IENvbW1vbiBTdWJzdHJpbmc6ICIgPDwgbG9uZ2VzdENvbW1vblN1YnN0cmluZyhzdHIxLCBzdHIyKSA8PCBlbmRsOwogICAgcmV0dXJuIDA7Cn0K