查找兩個字符串a,b中的最長公共子串(HJ65)


一:解題思路

方法一:暴力破解法

方法二:動態規划

二:完整代碼示例 (C++版和Java版)

方法一C++:

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>

using namespace std;


string findLCS(string s1, string s2)
{
    string result = "";
    for (int i = 0; i < s1.size(); i++)
    {
        string temp = "";
        for (int j = 0; j < s2.size(); j++)
        {
            int k = i;
            while (s1[k] == s2[j])
            {
                temp += s1[k];
                k++;
                j++;
            }

            if (temp.size() > result.size())
                result = temp;
            temp = "";
        }
    }

    return result;
}

int main()
{
    string s1 = "";
    string s2 = "";

    while (cin >> s1 >> s2)
    {
        if (s1.size() > s2.size())
            swap(s1,s2);

        string result = findLCS(s1,s2);
        cout << result << endl;
    }

    return 0;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM