最长公共子序列-LintCode

来源:互联网 发布:火炬之光2mac 版汉化 编辑:程序博客网 时间:2024/05/22 12:00

给出两个字符串,找到最长公共子序列(LCS),返回LCS的长度。
说明
最长公共子序列的定义:
最长公共子序列问题是在一组序列(通常2个)中找到最长公共子序列(注意:不同于子串,LCS不需要是连续的子串)。该问题是典型的计算机科学问题,是文件差异比较程序的基础,在生物信息学中也有所应用。
https://en.wikipedia.org/wiki/Longest_common_subsequence_problem
样例:
给出”ABCD” 和 “EDCA”,这个LCS是 “A” (或 D或C),返回1
给出 “ABCD” 和 “EACB”,这个LCS是”AC”,返回 2
给出 “ABCDE”和 “CDEAB”, 这个LCS是”CDE”, 返回3

#ifndef C77_H#define C77_H#include<iostream>#include<string>#include<queue>using namespace std;class Solution {public:    int longestCommonSubsequence(string A, string B) {        // write your code here        int length=0,max = 0,pos=0;        for (int k = 0; k < A.size(); ++k)        {            for (int i = k; i < A.size(); ++i)            {                for (int j = pos; j < B.size(); ++j)                {                    if (A[i] == B[j])                    {                        length++;                        pos = j;                        break;                    }                }                max = max >= length ? max : length;            }        }        return max;    }};#endif
原创粉丝点击