11077 最長公共子字串(優先做)

2021-10-12 08:00:22 字數 1144 閱讀 2503

求兩個輸入序列的最長的公共子字串的長度。子字串中的所有字元在源字串中必須相鄰。

如字串:21232523311324和字串312123223445,他們的最長公共子字串為21232,長度為5。

兩行,第一行為第乙個字串x,第二行為第二個字串y,字串不含空格並以回車標示結束。x和y的串長都

不超過10000。

兩行,第一行為最長的公共子字串的長度,第二行輸出乙個最長的公共子字串。

(1)若最長的公共子字串有多個,請輸出在源字串x中靠左的那個。

(2)若最長公共子字串的長度為0,請輸出空串(乙個換行符)。

如輸入:

21232523311324

152341231

由於523和123都是最長的公共子字串,但123在源串x中更靠左,因此輸出:

3123

21232523311324

312123223445

521232

這部分是我自己寫的,不是老師的注釋。首先,我們要知道,最長公共子串和最長公共子串行的區別。這題只要連續的相同才可以,而公共子串行則可以跳過幾個數字相同也可以。

另外,本人不才,只想到用棧的方法存陣列,如果有更好的方法,希望大家指出。

#include

#include

#include

#include

using

namespace std;

intmain()

for(

int i=

1;i<=blength;i++

)for

(int i=

1;i<=alength;i++)}

else}}

printf

("%d\n"

,max)

;//輸出最大值

bool flag =

false

;for

(int i=

1;i<=alength;i++

) flag =

true

;break;}

}}for(

int i=

0;i)return0;

}

最長公共子字串

關於題目理解,請注意和最長公共子串行的區別,最長公共子字串的解法是動態規劃,但是比較難想到表的構造方法。注意到,設給定字串為str1 和 str2 二者的長度分別是 len1 和 len2 那麼解空間大小之多是len1 len2?假設最長公共子字串為substr common,那麼substr co...

最長公共子字串

描述 求兩個輸入序列的最長的公共子字串的長度。子字串中的所有字元在源字串中必須相鄰。如字串 21232523311324和字串312123223445,他們的最長公共子字串為21232,長度為5。輸入格式 兩行,第一行為第乙個字串x,第二行為第二個字串y,字串不含空格並以回車標示結束。x和y的串長都...

最長公共子串,字串

目前,在各大 或者是,有著不少的關於這個問題的講解,但是目前覺得都不是很清晰明白!現在普遍的解法都是用動態規劃的方式來做這道筆試題。或者是經典的面試題。這裡我做乙個自認為比較清楚的講解。說到動態規劃很多人都不會感到很陌生。但是有多少知道動態規劃什麼?精髓在 這裡僅僅提供一些個人見解,首先,動態規劃不...