查詢兩個字串a,b中的最長公共子串。

2021-09-24 09:41:49 字數 356 閱讀 7259

題目描述:查詢兩個字串a,b中的最長公共子串。若有多個,輸出在較短串中最先出現的那個。

首先找到a和b中最短的那個字串。

這道題我覺得最巧妙的解法是利用了substr擷取a中的字串,每擷取一部分就去b中查詢,若在b中,就把最長的字串儲存起來。

另外需要注意的是find函式返回的是size_t型別的值,需要強轉成int型別的。

具體**如下:

#include #include using namespace std;

int main()

}cout<}

return 0;

}

查詢兩個字串a,b中的最長公共子串

查詢兩個字串a,b中的最長公共子串。若有多個,輸出在較短串中最先出現的那個。輸入描述 輸入兩個字串 輸出描述 返回重複出現的字元 輸入例子 abcdefghijklmnop abcsafjklmnopqrstuvw輸出例子 jklmnop1.第一種解法,動態規劃,dp i j 記錄的是短字串 s1 ...

求兩個字串最長公共字串

package com.test 求兩個字串最長公共字串,演算法 兩個字串形成乙個矩陣,將兩個字元不匹配的位置標記為0,c i j 中兩個字元相匹配的位置標記為n,其中n c i 1 j 1 1,其中沿正對角線方向最長的序列為兩個字串的最長公共子串行 public class lcs public ...

兩個字串的最長公共子串行

解題分析 設兩個序列x y 用lsc x,y 表示最長公共子串行。1.如果xn yn。則該元素一定存在於公共子串行中,所以可化為尋求子問題lsc x 1,y 1 用公式可表示為lsc x,y lsc x 1,y 1 1。2.如果xn yn。則該元素不存在於公共子串行中,所以轉而去尋求兩個子問題,即l...