class Solution { public: string LCS(string s1, string s2) { s1=" "+s1,s2=" "+s2; vector<pair<int,string>>dpnow(s2.length(),{0,""}); vector<pair<int,string>>dppre(s2.length(),{0,""}); bool fl=true; for(int i=1;i<s1.length();i++) { for(int j=1;j<s2.length();j++) { if(fl) { if(s1[i]==s2[j])dpnow[j].first=dppre[j-1].first+1,dpnow[j].second=dppre[j-1].second+s1[i]; else dpnow[j]=dppre[j].first>dpnow[j-1].first?dppre[j]:dpnow[j-1]; } else { if(s1[i]==s2[j])dppre[j].first=dpnow[j-1].first+1,dppre[j].second=dpnow[j-1].second+s1[i]; else dppre[j]=dpnow[j].first>dppre[j-1].first?dpnow[j]:dppre[j-1]; } } fl=!fl; } if(!fl)return dpnow[s2.length()-1].second.length()==0?"-1":dpnow[s2.length()-1].second; return dppre[s2.length()-1].second.length()==0?"-1":dppre[s2.length()-1].second; } };