每日一題:LCR 095.最長公共子序列(DP)

題目描述:

給定兩個字符串?text1?和?text2,返回這兩個字符串的最長?公共子序列?的長度。如果不存在?公共子序列?,返回?0?。

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

  • 例如,"ace"?是?"abcde"?的子序列,但?"aec"?不是?"abcde"?的子序列。

兩個字符串的?公共子序列?是這兩個字符串所共同擁有的子序列。

示例 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, text2.length <= 1000
  • text1?和?text2?僅由小寫英文字符組成。

思路:

本題采用動態規劃的思想,是一道很經典的動態規劃問題,我們把查找公共子序列問題一步一步壓縮成最小子問題。創建dp表,寫出狀態轉移方程,本題難點在于如何求出狀態轉移方程。

首先,第一種情況當最后一個字符相同時,我們只要比較前n-1個字符,第二種情況,當最后一個字符不同時,我們將一個字符串的最后一位相前移動一個比較。

如圖:

然后代碼實現時注意細節:我們dp表要創建的是m+1和n+1的大小,好進行初始化。

代碼實現

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530267.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530267.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530267.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php自動合并,php實現合并數組并去除重復的方法

php實現合并數組并去除重復的方法發布時間&#xff1a;2020-08-12 10:35:05來源&#xff1a;億速云閱讀&#xff1a;99作者&#xff1a;小新這篇文章主要介紹了php實現合并數組并去除重復的方法&#xff0c;具有一定借鑒價值&#xff0c;需要的朋友可以參考下。希望大家閱讀完這…

oracle存儲數據方式,Oracle 數據類型及存儲方式

Oracle 數據類型及存儲方式袁光東 原創概述通過實例&#xff0c;全面而深入的分析oralce的基本數據類型及它們的存儲方式。以ORACLE 10G為基礎&#xff0c;介紹oralce 10g引入的新的數據類型。讓你對oracle數據類型有一個全新的認識。揭示一些不為人知的秘密和被忽略的盲點。從…

oracle的一些基本操作,Oracle中的一些基本操作

關于Oracle中的一些基本操作&#xff0c;包括表空間操作&#xff0c;用戶操作&#xff0c;表操作1 --創建表空間2 create tablespace itheima3 datafile I:\oracle\table\itheima.dbf4 size 100m5 autoextend on6 next 10m;7 --刪除表空間8 drop tablespace itheima;910 --創建…

oracle全局批準供應商,Oracle EBS-SQL (PO-7):檢查異常-非批準的供應商設置供貨比例.sql...

select distinctmsr.sourcing_rule_name 名稱,msi.description 說明,msi.item_type 類型,msi.inventory_item_status_code 狀態,msr.planning_active 計劃生效,msro.effective_date 有…

linux 臨時文件 鎖,linux – 無法使用文件描述符flock鎖定文件

您正在使用-n,如果無法立即獲取鎖定將終止,并且flock將以退出代碼1失敗.因此,在第一個終端中執行代碼后,它會休眠100秒.接下來當你在另一個終端中執行相同的操作時,flock會失敗并返回1,但是因為有一個;并且您不對返回代碼執行任何操作,shell只是繼續執行下一個語句并休眠100秒.…

linux內核運行關系圖,一張圖看懂Linux內核運行交互關系

很多朋友如果接觸過Linux的都知道Kernel的含義&#xff0c;kernel是操作系統的核心或者最重要的部分。眾所周知的是&#xff0c;幾乎整個互聯網都運行在 Linux上&#xff0c;從網絡協議&#xff0c;到服務器&#xff0c;到你平常訪問的絕大多數網站&#xff0c;都能看到它的身…

win7下訪問linux文件權限,linux中文件的權限

一、文件的基本權限權限&#xff1a;r, w, x對于文件來講&#xff0c;r:&#xff1a;可讀&#xff0c;可以使用類似cat等命令查看文件內容&#xff1b;w:可寫&#xff0c;可以編輯或刪除此文件&#xff1b;x:可執行&#xff0c;exacutable&#xff0c;可以命令提示符下當作命令…

linux頭文件怎么編譯,microsoft編譯器怎么使用Linux頭文件

microsoft編譯器如何使用Linux頭文件?#include #include #include #include #include #include #include #include #include #include #include #include #include 分享到&#xff1a;------解決方案--------------------windows 對應 上面頭文件 是哪個呀?引用:一般都是網絡…

linux程序多少位,查看linux版本是多少位

1 查看內核版本&#xff1a;1)[rootLinux download]# cat /proc/versionLinux version 2.6.18-194.el5 (mockbuildbuilder16.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Fri Apr 2 14:58:35 EDT 20102)[rootLinux download]# uname -aLinux Linux 2.…

linux內核bios,BIOS的啟動原理——Linux內核設計學習筆記

RAM&#xff1a;隨機存取存儲器&#xff0c;常見的內存條就是一類RAM&#xff0c;其特點是加電狀態下可任意讀、寫&#xff0c;斷電后信息消失。在RAM中什么程序也沒有的時候&#xff0c;誰來完成加載軟盤中操作系統的任務呢&#xff1f;答案是&#xff1a;BIOS。BIOS的啟動原理…

zabbix監控linux網卡流量,zabbix實現linux流量變化率監控

監控軟件&#xff1a;zabbix需求分析&#xff1a;從系統層面的監控看&#xff0c;現在CPU持續超過80%會報警&#xff0c;流量曲線達到閥值才會報警&#xff0c;但是流量在短時間內起伏很大&#xff0c;肯定是有問題的&#xff0c;目前主要還是依靠人看&#xff0c;肯定有滯后性…

Linux下仿windows任務管理器,開源任務管理器 Process Hacker (Windows)

Windows表面上沒有工作在進行中&#xff0c;但不知為何負荷很重&#xff0c;究竟有什么進程在執行&#xff1f;會不會是系統已經被入侵&#xff1f;這是很多人都想知道的問題。但Windows自帶的任務管理員實在太過簡陋&#xff0c;解決辦法便是安裝這次介紹的Process Hacker。熟…

linux軟件工程師筆試題,C/C++軟件工程師筆試題

1&#xff0c;程序設計(可以用自然語言來描述&#xff0c;不編程)&#xff1a;C/C源代碼中&#xff0c;檢查花括弧(是“(”與“)”&#xff0c;“{”與“}”)是否匹配&#xff0c;若不匹配&#xff0c;則輸出不匹配花括弧所在的行與列。2&#xff0c;巧排數字&#xff0c;將1,2…

嵌入式linux中的鎖機制,跟濤哥一起學嵌入式第11集:一個實現鎖機制非常有意思的宏...

QQ群(宅學部落)有位學員問了一個很奇怪的宏&#xff0c;覺得很有意思&#xff0c;特拿來分享&#xff0c;它的定義如下:我們知道&#xff0c;宏定義其實就是為了方便&#xff0c;給一串代碼字符串定義一個別名。有時候字符串過于復雜&#xff0c;我們可以分多行書寫&#xff0c…

linux 制作box文件夾,用busybox制作自己簡易的根文件系統

當使用Busybox-1.2.0制作根文件系統交叉編譯器為3.3.2make-3.8.1STEP 1&#xff1a;創建根文件系統目錄&#xff0c;主要包括以下目錄/bin&#xff0c;/etc&#xff0c;/dev&#xff0c;/mnt&#xff0c;/sbin&#xff0c;/usr。STEP 2&#xff1a;升級make到3.81版本&#xff…

linux主頻限制服務,linux抵御DDOS攻擊 通過iptables限制TCP連接和頻率

cc攻擊一到就有點兵臨城下的感覺&#xff0c;正確的設置防護規則可以做到臨危不亂&#xff0c;這里給出一個iptables對ip進行連接頻率和并發限制&#xff0c;限制單ip連接和頻率的設置規則的介紹#單個IP在60秒內只允許新建20個連接,這里假設web端口就是80,iptables -I INPUT -…

linux es數據庫 head,elasticsearch安裝es-sql插件

說明&#xff1a;本示例是在CentOs Linux7.4上運行&#xff0c;安裝的es版本為6.8.0&#xff0c;對應es-sql版本6.8.0&#xff0c;es-head版本5.0.0&#xff0c;需要安裝JDK下載es安裝包wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.0.tar.gz…

LINUX進程調度分析源碼,Linux 實時調度(源碼分析)

為了弄清楚在多cpu系統中是如何實現實時調度的&#xff0c;先引入以下幾個概念&#xff1a;cpu的狀態&#xff1a;我們知道&#xff0c;在linux系統中&#xff0c;任務的優先級為0~140。INVALID:(-1)該cpu不可用IDLE(0):140NORMAL(1)&#xff1a;100~139對應于普通任務的優先級…

linux源碼文件名,Linux中文件名解析處理源碼分析

Linux中文件名解析處理源碼分析前言Linux中對一個文件進行操作的時候&#xff0c;一件很重要的事情是對文件名進行解析處理&#xff0c;并且找到對應文件的inode對象&#xff0c;然后創建表示文件的file對象。在此&#xff0c;對文件名解析過程&#xff0c;并且如何找到對應ino…

帝國cms linux偽靜態規則,帝國cms7.2偽靜態規則怎么寫

一、在linux主機下實現偽靜態確認虛擬主機是否支持rewrite偽靜態.htaccess文件。添加.htaccess 文件&#xff0c;把htaccess 文件放在網站根目錄。二、在win主機下實現偽靜態確認虛擬主機是否支持rewrite偽靜態httpd.ini文件。添加httpd.ini文件&#xff0c;把httpd.ini文件放入…