int Commlen(string s1, string s2) {//假设s1[0], s2[0]都没有保存实际字符,只是压入一个空值。 int l1,l2,i,j; l1 = s1.size(); l2 = s2.size(); vector<int> l(l1+1, 0); vector<int> r(l1+1, 0); for(j = 1; j<l2; j++) { for(i=1; i<l1;i++) { if(s1[i]==s2[i]) { l[i] = r[i-1] + 1; if(i==j) cout<<s1[i]; } else l[i] = l[i-1]>r[i]?l[i-1]:r[i]; } for(i=1; i<l1; i++) r[i] = l[i]; } cout<<endl; return r[l1-1]; } int main(int argc, char** argv) { string s1(" abc"); string s2(" acc"); cout<<Commlen(s1,s2)<<endl; return (0); }