Complete-Preparation

πŸŽ‰ One-stop destination for all your technical interview Preparation πŸŽ‰

View the Project on GitHub

Longest String Chain 🌟🌟

Solution

Code

bool checkPossible(string& s, string& t)
{
    if (s.size() != t.size() + 1) return false;
    int i = 0, j = 0;
    while (i < s.size()) {
        if (j < t.size() && s[i] == t[j]) {
            i++;
            j++;
        } else {
            i++;
        }
    }
    if (i == s.size() && j == t.size()) return true;
    return false;
}
int longestStrChain(vector<string>& arr)
{
    int n = arr.size();
    sort(arr.begin(), arr.end(), [](string& a, string& b) {
        return a.size() < b.size();
    });
    vector<int> dp(n, 1);
    int ans = 1;
    for (int i = 0; i < n; i++) {
        for (int prev = 0; prev < i; prev++) {
            if (checkPossible(arr[i], arr[prev]) && dp[prev] + 1 > dp[i]) { // LIS Code changed here
                dp[i] = dp[prev] + 1;
            }
        }
        ans = max(ans, dp[i]);
    }
    return ans;
}