牛客题霸 [最长公共子串]C++题解/答案
生活随笔
收集整理的這篇文章主要介紹了
牛客题霸 [最长公共子串]C++题解/答案
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
牛客題霸 [最長公共子串]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 hereif(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;elsedp[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;} };總結(jié)
以上是生活随笔為你收集整理的牛客题霸 [最长公共子串]C++题解/答案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word文档太大了怎么压缩word文档文
- 下一篇: 牛客题霸 [ 大数加法]C++题解/答案