最长公共子串

来源:互联网 发布:mac os x 10.11镜像 编辑:程序博客网 时间:2024/05/07 01:59

给定字符串A和B,输出A和B中的第一个最长公共子串,比如A=“wepiabc B=“pabcni”,则输出“abc”。

#include <iostream>using namespace std;#define N 100string findLongestCommonSubString(string str1, string str2) {int dp[N][N] = { 0 };memset(dp, 0, sizeof(int) * N * N);int maxLen = 0;int maxId = 0;int len1 = str1.length();int len2 = str2.length();for (int i = 1; i <= len1; ++i) {for (int j = 1; j <= len2; ++j) {if (str1.at(i - 1) == str2.at(j - 1)) {dp[i][j] = dp[i - 1][j - 1] + 1;if (maxLen < dp[i][j]) {maxLen = dp[i][j];maxId = i;}}}}return str1.substr(maxId - maxLen, maxLen);}int main() {string str1 = "YXXXXXY";string str2 = "YXYXXYYYYXXYYYYXYYXXYYXXYXYYYYYYXYXYYXYXYYYXXXXXX ";string result = findLongestCommonSubString(str1, str2);cout << "LongestCommonSubString: " << result << endl;return 0;}


0 0
原创粉丝点击