1. 程式人生 > >79 最長公共子串

79 最長公共子串

www. 動態規劃 problem public comm active desc col 不同

原題網址:https://www.lintcode.com/problem/longest-common-substring/description

描述

給出兩個字符串,找到最長公共子串,並返回其長度。

子串的字符應該連續的出現在原字符串中,這與子序列有所不同。

您在真實的面試中是否遇到過這個題?

樣例

給出A=“ABCD”,B=“CBCE”,返回 2

挑戰

O(n x m) time and memory.

標簽 字符串處理 LintCode 版權所有 思路:依舊是動態規劃。 AC代碼
class Solution {
public: /** * @param A: A string * @param B: A string * @return: the length of the longest common substring. */ int longestCommonSubstring(string &A, string &B) { // write your code here int n1=A.size(),n2=B.size(); if (n1==0||n2==0) { return
0; } vector<vector<int>> dp(n1+1,vector<int>(n2+1,0)); int maxl=-1; for (int i=1;i<=n1;i++) { for (int j=1;j<=n2;j++) { if (A[i-1]==B[j-1]) { dp[i][j]=dp[i-1][j-1]+1; } maxl
=max(maxl,dp[i][j]); } } return maxl; } };

79 最長公共子串