題目描述
給定兩個字串str1和str2,輸出兩個字串的最長公共子串,如果最長公共子串為空,輸出-1。
示例1輸入
"1ab2345cd","12345ef"返回值
"2345"python**:
#
# longest common substring
# @param str1 string字串 the string
# @param str2 string字串 the string
# @return string字串
#class solution:
def lcs(self , str1 , str2 ):
# write code here
res = ''
ans = 0
dp = [[0 for _ in range(len(str2))] for _ in range(len(str1))]
for i in range(len(str1)):
for j in range(len(str2)):
if str1[i] == str2[j]:
if i - 1 < 0 or j - 1 < 0:
dp[i][j] = 0
else:
dp[i][j] = dp[i-1][j-1] + 1
else:
dp[i][j] = 0
ans = max(ans, dp[i][j])
if ans == dp[i][j]:
res = str1[i-ans+1:i+1]
if res == '':
return -1
return res
牛客刷題 最長公共子串
題目 給定兩個字串str1和str2,輸出兩個字串的最長公共子串,如果最長公共子串為空,輸出 1。輸入 1ab2345cd 12345ef 輸出 2345 看完題目想到了用動歸,剛開始分析的時候想著,對於每兩個元素的比較,有兩種情況,1.元素相同,那麼當前元素能夠成的最長公共子串的長度為上乙個的 1...
牛客題霸 研發 NC127 最長公共子串
本題鏈結 給定兩個字串str1和str2,輸出兩個字串的最長公共子串,如果最長公共子串為空,輸出 1。輸入 1ab2345cd 12345ef 返回值 2345 動態規劃問題 假設兩個字串長度為n m,具體分析其問題 最優子結構 如果知道 n 1 m 1 長度字串的最長公共子串s,則 n m 長度字...
牛客題霸 最長公共字首 C 題解 答案
牛客題霸 最長公共字首 c 題解 答案 編寫乙個函式來查詢字串陣列中的最長公共字首。原本想暴力做,直接多層迴圈套,發現並不用 注意本題,給出了多組字串,求它們的最長公共字首,這可怎麼辦?因為是最長公共字首,也就是所有字串都有 我們先將所有字串排序,越近的字串最長公共字首越多,反而越遠就越少 所以我們...