題目描述:查詢兩個字串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...