Longest common substring
1. 使用二维向量存当前长度。
string lcs(const string &s, const string &t) { const int slen = s.length(); const int tlen = t.length(); vector<vector<int>> arr(slen, vector<int>(tlen, 0)); string lcs; int maxlen = 0; for(int i=0; i<slen; i++) { for(int j=0; j<tlen; j++) { if(s[i] == t[j]) { if(0 == i || 0 == j) arr[i][j] = 1; else { arr[i][j] = arr[i-1][j-1] + 1; } if(maxlen < arr[i][j]) { maxlen = arr[i][j]; lcs.assign(s.begin() + (i+1-maxlen), s.begin()+i+1); } } } } return lcs; }