牛客題霸 [最長公共子串]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++
- 領釦LintCode演算法問題答案-77. 最長公共子序列演算法
- 牛客題霸--連續子陣列的最大和陣列
- 牛客題霸--求路徑
- LeetCode題集-5 - 最長迴文子串(一)LeetCode
- 最長公共子串 二維陣列 Go實現陣列Go
- 最長子串
- 【每日一題】無重複字元的最長子串每日一題字元
- Amazon面試題:尋找最長迴文子串面試題
- 最長公共子序列問題—動態規劃sdut動態規劃
- 最長上升子串
- 最長公共子序列
- LeetCode題集-3 - 無重複字元的最長子串LeetCode字元
- 動態規劃經典問題----最長公共子序列動態規劃
- 用滑動視窗來解決最長無重複子串問題
- 牛客多校H題題解
- 最長公共子序列(JAVA)Java
- 經典演算法題每日演練——最長公共子序列演算法
- 牛客題霸NC132環形連結串列的約瑟夫問題Java題解Java
- #leetcode刷題之路3-無重複字元的最長子串LeetCode字元
- 每天一道演算法題:最長迴文子串演算法
- [LeetCode 刷題] 3. 無重複字元的最長子串 (Medium)LeetCode字元
- LeetCode題集-5 - 最長迴文子串之馬拉車(二)LeetCode
- java 最長迴文子串Java
- 【LeetCode動態規劃#14】子序列系列題(最長遞增子序列、最長連續遞增序列、最長重複子陣列、最長公共子序列)LeetCode動態規劃陣列
- 雙子串最大異或 題解
- [LeetCode解題] -- 動態規劃二 [ 子串、子序列問題 ]LeetCode動態規劃
- leetcode 解題 5. 最長迴文子串 python@ 官解,暴力法,動態法,manacher 法LeetCodePython
- 5. 最長迴文子串
- LeetCode每日一題:最長公共字首(No.14)LeetCode每日一題
- 牛課題霸--palindrome-number
- 最長公共子序列求方案數