Java字串程式設計 最長連續字母序列的長度

2021-07-04 14:55:23 字數 1053 閱讀 3527

給定乙個 query 和乙個 text,均由小寫字母組成。要求在 text 中找出以同樣的順序連 續出現在 query 中的最長連續字母序列的長度。例如, query 為「acbac」,text 為 「acaccbabb」,那麼 text 中的「cba」為最長的連續出現在 query 中的字母序列,因此, 返回結果應該為其長度 3。請注意程式效率。

思路:用乙個矩陣來記錄兩個字串中所有位置的兩個字元之間的匹配情況,若是匹配則為1,否則為0。然後求出對角線最長的1序列,其對應的位置就是最長匹配子串的位置.

當字元匹配的時候,不是簡單的給相應元素賦上1,而是賦上其左上角元素的值加1。我們用兩個標記變數來標記矩陣中值最大的元素的位置,在矩陣生成的過程中來判斷

當前生成的元素的值是不是最大的,據此來改變標記變數的值,那麼到矩陣完成的時

候,最長匹配子串的位置和長度就已經出來了。

例項如下:

a    c    b    a    c

a   1    0    0    1    0   

c   0    2    0    0    2

a   1    0    0    1    0

c   0    2    0    0    2

c   0    1    0    0    1

b   0    0   2    0    0

a   1    0    0   3    0    

b   0    0    1    0    0

b   0    0    1    0    0

/**

* created by art on 2015/8/15.

*/public class getlcslength

public static int getlength(string query, string text)

if(flags[i][j] > result)

result = flags[i][j];}}

}return result;

}}

結果:3

字串最長連續子串

題目 求給定字串中連續出現次數最多的子串。例 abcbcbcabc,bc出現次數最多,為3次 分析 1 將字尾陣列依次存入字串陣列中 2 依次將第i個字串的長度為j i的子串與第j個字串相比,若相等,則比較j字串剩下有幾個子串與之相等 3 記錄每個子串出現的次數,並比較,保留最大的 pairfun ...

求最長連續字串問題

注意這裡講的是連續,也就是substring,不是subsquence 我們有兩個方法,動態規劃和直尺法。dp 建乙個c i j 陣列,表示在第i比較中,最長的連續長度 include include include include define n 500010 using namespace s...

字串中找連續最長字串 c

題目描述 讀入乙個字串str,輸出字串str中的連續最長的數字串 輸入描述 乙個測試輸入包含1個測試用例,乙個字串str,長度不超過255。輸出描述 在一行內輸出str中里連續最長的數字串。解題思路 找乙個儲存結果的字串res和乙個臨時儲存遍歷所給字串temp 遍歷所給字串,利用isdigital函...