Subscribe Us

Responsive Advertisement

Advertisement

34.Longest String Chain

 #include<bits/stdc++.h>

using namespace std;
bool ok(string &s1,string &s2)
{
    if(s1.size()==s2.size())return false;
    if(s2.size()>s1.size()+1)return false;
    int f,s;
    s=0;
    f=0;
    while(s<s2.size())
    {
        if(s1[f]==s2[s])
        {
             f++;
             s++;
        }
        else s++;
    }
    if(f==s1.size()&&s==s2.size())return true;
    return false;
}
bool cmp(string &s1,string &s2)
{
    if(s1.size()<s2.size())return true;
   return false;
}
int longestStrChain(vector<string> &arr)
{
    // Write your code here.
    int n,i,j;
    n=arr.size();
    int dp[n+2];
    for(i=0;i<=n;i++)dp[i]=1;
    sort(arr.begin(),arr.end(),cmp);
   
    cout<<endl;
    for(i=1;i<n;i++)
    {

        for(j=0;j<i;j++)
        {
            if(ok(arr[j],arr[i]))
            {
                 dp[i]=max(dp[i],dp[j]+1);
            }
        }
    }
    int ans=1;
    for(i=0;i<n;i++)
    {
      
        ans=max(ans,dp[i]);
    }
    return ans;
}

Post a Comment

0 Comments