#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;
}
0 Comments