日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 1143. 最长公共子序列(动态规划)

發布時間:2024/7/5 编程问答 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 1143. 最长公共子序列(动态规划) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 題目

給定兩個字符串 text1 和 text2,返回這兩個字符串的最長公共子序列的長度。

一個字符串的 子序列 是指這樣一個新的字符串:它是由原字符串在不改變字符的相對順序的情況下刪除某些字符(也可以不刪除任何字符)后組成的新字符串。

例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。兩個字符串的「公共子序列」是這兩個字符串所共同擁有的子序列。

若這兩個字符串沒有公共子序列,則返回 0。

示例 1: 輸入:text1 = "abcde", text2 = "ace" 輸出:3 解釋:最長公共子序列是 "ace",它的長度為 3。示例 2: 輸入:text1 = "abc", text2 = "abc" 輸出:3 解釋:最長公共子序列是 "abc",它的長度為 3。示例 3: 輸入:text1 = "abc", text2 = "def" 輸出:0 解釋:兩個字符串沒有公共子序列,返回 0。提示: 1 <= text1.length <= 1000 1 <= text2.length <= 1000 輸入的字符串只含有小寫英文字符。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/longest-common-subsequence
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

動態規劃應用–搜索引擎拼寫糾錯

類似題目:
LeetCode 72. 編輯距離(DP)
LeetCode 583. 兩個字符串的刪除操作(動態規劃)
LeetCode 712. 兩個字符串的最小ASCII刪除和(DP,類似編輯距離)
程序員面試金典 - 面試題 01.05. 一次編輯(編輯距離,DP)

class Solution { public:int longestCommonSubsequence(string text1, string text2) {int m = text1.size(), n = text2.size(), i, j;vector<vector<int>> dp(m+1,vector<int>(n+1,0));for(i = 1; i <= m; ++i){for(j = 1; j <= n; ++j){if(text1[i-1] == text2[j-1])dp[i][j] = max(dp[i][j], dp[i-1][j-1]+1);elsedp[i][j] = max(dp[i][j], max(dp[i-1][j], max(dp[i][j-1],dp[i-1][j-1])));}}return dp[m][n];} };

44 ms 12.5 MB

class Solution:def longestCommonSubsequence(self, a: str, b: str) -> int:n1, n2 = len(a), len(b)dp = [[0 for _ in range(n2+1)] for _ in range(n1+1)]for i in range(1,n1+1):for j in range(1,n2+1):if a[i-1] == b[j-1]:dp[i][j] = max(dp[i][j], dp[i-1][j-1]+1)else:dp[i][j] = max(dp[i][j], max(dp[i - 1][j], max(dp[i][j - 1], dp[i - 1][j - 1])))return dp[n1][n2]

772 ms 23.2 MB Python3

總結

以上是生活随笔為你收集整理的LeetCode 1143. 最长公共子序列(动态规划)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。