题目:solveNQueens
要求:
给出两个字符串,找到最长公共子串,并返回其长度。
样例:
给出A=“ABCD”,B=“CBCE”,返回 2
算法要求:
O(n x m) time and memory.
解题思路:
dp数组存储当前点二个字符串重复的值
算法如下:
int longestCommonSubstring(string &str, string &str2) {
// write your code here
int dp[201][201] = {0};
int size = str.length();
int size2 = str2.length();
pair<int, int> max;
max.second = 0;
for (int i = 0; i < size; i++) {
for (int j = 0; j < size2; j++) {
if (str[i] == str2[j]) {
if (i == 0 || j == 0) {
dp[i][j] = 1;
} else {
dp[i][j] = dp[i - 1][j - 1] + 1;
}
if (dp[i][j] > max.second) {
max.first = i;
max.second = dp[i][j];
}
} else {
dp[i][j] = 0;
}
}
}
return max.second;
}