牛客題霸 [最長公共子串]C++題解/答案
題目描述
給定兩個字串str1和str2,輸出兩個字串的最長公共子串,如果最長公共子串為空,輸出-1
題解:
lcs模板
程式碼:
class Solution {
public:
/**
* longest common substring
* @param str1 string字串 the string
* @param str2 string字串 the string
* @return string字串
*/
string LCS(string str1, string str2) {
// write code here
if(str1.size()==0||str2.size()==0) return "-1";
vector<int>dp(str2.size()+1);
int tmp=0,anslen=0,end=0;
for(int i=1;i<=str1.size();++i){
int last=0;
for(int j=1;j<=str2.size();++j){
tmp=dp[j];
if(str1[i-1]==str2[j-1])
dp[j]=last+1;
else
dp[j]=0;
last=tmp;
if(anslen<dp[j]){
anslen=dp[j];
end=j;
}
}
}
string ans=str2.substr(end-anslen, anslen);
return ans.size()==0?"-1":ans;
}
};
相關文章
- 牛客網 Coincidence(最長公共子串LCS板題)IDE
- 牛客題霸 [括號序列] C++題解/答案C++
- lCS(最長公共子串)
- 線性dp:最長公共子串
- 兩個字串的最長公共子串字串
- python 動態規劃(揹包問題和最長公共子串)Python動態規劃
- 演算法題:最長公共子序列演算法
- [題解]P1439 【模板】最長公共子序列
- 牛客題霸--連續子陣列的最大和陣列
- 牛客題霸 [二叉樹中是否存在節點和為指定值的路徑] C++題解/答案二叉樹C++
- poj3080-kmp+列舉子串 求最長公共子串KMP
- 最長子串
- [演算法筆記]動態規劃之最長公共子串和最長公共子序列演算法筆記動態規劃
- 領釦LintCode演算法問題答案-77. 最長公共子序列演算法
- 最長公共子串 二維陣列 Go實現陣列Go
- Amazon面試題:尋找最長迴文子串面試題
- 【每日一題】無重複字元的最長子串每日一題字元
- 最長公共子序列問題—動態規劃sdut動態規劃
- 最長公共子序列
- 用滑動視窗來解決最長無重複子串問題
- 動態規劃經典問題----最長公共子序列動態規劃
- 最長公共子序列(JAVA)Java
- 牛客題霸NC132環形連結串列的約瑟夫問題Java題解Java
- 牛客多校H題題解
- 經典演算法題每日演練——最長公共子序列演算法
- java 最長迴文子串Java
- poj 2774 求兩字串的最長公共子串 字尾陣列字串陣列
- 每天一道演算法題:最長迴文子串演算法
- 今日面試題:最長迴文子串;及迴文分割分析面試題
- LeetCode題集-3 - 無重複字元的最長子串LeetCode字元
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- java 實現 最長公共子序列Java
- 最長公共子序列求方案數
- 線性dp:最長公共子序列
- 無重複字元的最長子串問題 (移動視窗法求解)字元
- 雙子串最大異或 題解
- 牛客周賽 Round 62 全部題解
- [LeetCode 刷題] 3. 無重複字元的最長子串 (Medium)LeetCode字元