#include <bits/stdc++.h>
using namespace std;
// Helper function to check if 'sub' is a subsequence of 'x'
bool isSubsequence(const string &x, const string &sub) {
int i = 0, j = 0;
while (i < x.size() && j < sub.size()) {
if (x[i] == sub[j]) j++;
i++;
}
return j == sub.size();
}
int longestSubsequence(string x, string y) {
int maxLen = 0;
int n = y.size();
// Generate all substrings of y
for (int i = 0; i < n; i++) {
string temp = "";
for (int j = i; j < n; j++) {
temp += y[j];
if (isSubsequence(x, temp)) {
maxLen = max(maxLen, j - i + 1);
}
}
}
return maxLen;
}
// Example usage
int main() {
string x = "hackerranks";
string y = "hackers";
cout << longestSubsequence(x, y) << endl; // Output: 7
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgovLyBIZWxwZXIgZnVuY3Rpb24gdG8gY2hlY2sgaWYgJ3N1YicgaXMgYSBzdWJzZXF1ZW5jZSBvZiAneCcKYm9vbCBpc1N1YnNlcXVlbmNlKGNvbnN0IHN0cmluZyAmeCwgY29uc3Qgc3RyaW5nICZzdWIpIHsKICAgIGludCBpID0gMCwgaiA9IDA7CiAgICB3aGlsZSAoaSA8IHguc2l6ZSgpICYmIGogPCBzdWIuc2l6ZSgpKSB7CiAgICAgICAgaWYgKHhbaV0gPT0gc3ViW2pdKSBqKys7CiAgICAgICAgaSsrOwogICAgfQogICAgcmV0dXJuIGogPT0gc3ViLnNpemUoKTsKfQoKaW50IGxvbmdlc3RTdWJzZXF1ZW5jZShzdHJpbmcgeCwgc3RyaW5nIHkpIHsKICAgIGludCBtYXhMZW4gPSAwOwogICAgaW50IG4gPSB5LnNpemUoKTsKCiAgICAvLyBHZW5lcmF0ZSBhbGwgc3Vic3RyaW5ncyBvZiB5CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIHN0cmluZyB0ZW1wID0gIiI7CiAgICAgICAgZm9yIChpbnQgaiA9IGk7IGogPCBuOyBqKyspIHsKICAgICAgICAgICAgdGVtcCArPSB5W2pdOwogICAgICAgICAgICBpZiAoaXNTdWJzZXF1ZW5jZSh4LCB0ZW1wKSkgewogICAgICAgICAgICAgICAgbWF4TGVuID0gbWF4KG1heExlbiwgaiAtIGkgKyAxKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICByZXR1cm4gbWF4TGVuOwp9CgovLyBFeGFtcGxlIHVzYWdlCmludCBtYWluKCkgewogICAgc3RyaW5nIHggPSAiaGFja2VycmFua3MiOwogICAgc3RyaW5nIHkgPSAiaGFja2VycyI7CiAgICBjb3V0IDw8IGxvbmdlc3RTdWJzZXF1ZW5jZSh4LCB5KSA8PCBlbmRsOyAvLyBPdXRwdXQ6IDcKICAgIHJldHVybiAwOwp9Cg==