还算是挺简单的一题。
维护二维数组代表停止至两个字符串的某个位置,前面的最长公共子序列长度。
状态转移方程就是当两字符相等是,取俩位置前一个的值加一,否则就直接等于俩位置前一个值。
- class Solution {
- public:
- int longestCommonSubsequence(string text1, string text2) {
- vector<vector<int>> common(text1.size()+1,vector<int> (text2.size()+1,0));
- for(int i=1;i<=text1.size();i++){
- for(int j=1;j<=text2.size();j++){
- if(text1[i-1]==text2[j-1]) common[i][j]=max(common[i][j],common[i-1][j-1]+1);
- else common[i][j]=max(common[i-1][j],common[i][j-1]);
- }
- }
- return common[text1.size()][text2.size()];
- }
- };
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |