牛客網的題目鏈結
對於兩個字串,請設計乙個時間複雜度為o(m*n)的演算法(這裡的m和n為兩串的長度),求出兩串的最長公共子串的長度。這裡的最長公共子串的定義為兩個序列u1,u2,..un和v1,v2,…vn,其中ui + 1 == ui+1,vi + 1 == vi+1,同時ui == vi。
給定兩個字串a和b,同時給定兩串的長度n和m。
測試樣例:
「1ab2345cd」,9,」12345ef」,7
返回:4
此題用動態規劃來解答
遞推公式:
若str[i] = str[j],dp[i][j] = dp[i-1][j-1] + 1
若str[i] != str[j],dp[i][j] = 0
**如下:
class longestsubstring }}
return max;
}};
最長公共字串
include include include include include customer.h using namespace std 最長公共字串 動態規劃 假設需要求得字串為str1,str2。函式f m,n 分別為 str1 m str2 n 結尾的公共字串長度。有以下遞推公式 遞推邊界...
最長公共字串和最長公共子串行
給出兩個字串,找到最長公共子串,並返回其長度。建立乙個矩陣來儲存兩個字串出現相同字元的地方,比如 abccd 和 abcefc 就有 abccd a10000 b02000 c00300 e00040 f00000 c00100 這樣就有每次遇到相等的都加上下他的斜上方的位置的值,然後使用乙個max...
OJ最長公共字串
字串合併處理 00 小時 01 分 33 秒 描述 詳細描述 將輸入的兩個字串合併。對合併後的字串進行排序,要求為 下標為奇數的字元和下標為偶數的字元分別從小到大排序。這裡的下標意思是字元在字串中的位置。對排訓後的字串進行操作,如果字元為 0 9 或者 a f 或者 a f 則對他們所代表的16進製...