题目:
思路:
我也不会,看出来了是动态规划,然后想着用sort试试.
看的题解.每一次扫描 双重for循环扫描字符(感觉这和一个个对比双指针区别不大了)..这动态规划也太笨重.
循环扫描数组。当字符相同的时候 + 1,否则等于它们之前较大的那一个。
代码是:
//code
class Solution {
public:
int longestCommonSubsequence(string text1, string text2) {
const int M = text1.size();
const int N = text2.size();
vector<vector<int>> dp(M + 1, vector<int>(N + 1, 0));
for (int i = 1; i <= M; ++i) {
for (int j = 1; j <= N; ++j) {
if (text1[i - 1] == text2[j - 1]) {
dp[i][j] = dp[i - 1][j - 1] + 1;
} else {
dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]);
}
}
}
return dp[M][N];
}
};