給定乙個 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函...