leetcode97. 交錯字符串(動態規劃)

給定三個字符串 s1, s2, s3, 驗證 s3 是否是由 s1 和 s2 交錯組成的。

示例 1:

輸入: s1 = “aabcc”, s2 = “dbbca”, s3 = “aadbbcbcac”
輸出: true

解題思路

數組含義:dp[i][j]s1的前i個和s2的前j個能否組成字符串s3的前i+j長度的子串
狀態轉移: dp[i][j]=dp[i][j]||(dp[i-1][j]&&s1.charAt(i-1)==s3.charAt(loc))在(i-1,j)的基礎上, 判斷新加入的s1的i位置是否匹配s3.

代碼

class Solution {public boolean isInterleave(String s1, String s2, String s3) {int n=s1.length(),m=s2.length();if(n+m!=s3.length()) return false;boolean[][] dp=new boolean[n+1][m+1];dp[0][0]=true;for(int i=0;i<=n;i++)for(int j=0;j<=m;j++){int loc=i+j-1;if(i>0)dp[i][j]=dp[i][j]||(dp[i-1][j]&&s1.charAt(i-1)==s3.charAt(loc));if(j>0)dp[i][j]=dp[i][j]||(dp[i][j-1]&&s2.charAt(j-1)==s3.charAt(loc));}return dp[n][m];}
}

不一樣的動態規劃代碼

class Solution {public static boolean isInterleave(String s1, String s2, String s3) {int n=s1.length(),m=s2.length();if(n+m!=s3.length()) return false;int[][] dp=new int[n+1][m+1];for(int i=1;i<=m;i++)if(s3.charAt(dp[0][i-1])==s2.charAt(i-1))dp[0][i]=dp[0][i-1]+1;else dp[0][i]=dp[0][i-1];for(int i=1;i<=n;i++)if(s3.charAt(dp[i-1][0])==s1.charAt(i-1))dp[i][0]=dp[i-1][0]+1;else dp[i][0]=dp[i-1][0];for(int i=1;i<=n;i++)for(int j=1;j<=m;j++){    if(s3.charAt(dp[i-1][j])==s1.charAt(i-1))dp[i][j]= Math.max(Math.max(dp[i][j-1],dp[i-1][j]+1),dp[i][j]);if(s3.charAt(dp[i][j-1])==s2.charAt(j-1))dp[i][j]= Math.max(Math.max(dp[i-1][j],dp[i][j-1]+1),dp[i][j]);}   return  dp[n][m]==s3.length();}
}

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

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

相關文章

【LeetCode】19. Remove Nth Node From End of List

Given a linked list, remove the nth node from the end of list and return its head. For example, Given linked list: 1->2->3->4->5, and n 2.After removing the second node from the end, the linked list becomes 1->2->3->5.題意&#xff1a;…

《網絡空間欺騙:構筑欺騙防御的科學基石》一1.1 主動網絡空間防御中網絡空間抵賴與欺騙的視圖...

1.1 主動網絡空間防御中網絡空間抵賴與欺騙的視圖 本文講的是網絡空間欺騙&#xff1a;構筑欺騙防御的科學基石一1.1 主動網絡空間防御中網絡空間抵賴與欺騙的視圖,將抵賴與欺騙納入標準操作規程&#xff08;SOP&#xff09;&#xff1a;隨著攻擊技術的不斷演進&#xff0c;網…

管樁的彈性模量計算公式_樁基設計計算公式

0.9300.71555.31201018001.130973355樁長21.3mN(KN)φfc(kN/m2)Ap(m2)f’s(kN/m2)A’s(m2)樁直徑(m2)11518.963620.7119001.1309733553000000.0160849541.2標準值19006.29KN單樁承載力設計計算(建筑樁基技術規范08版)根據《建筑樁基技術規范》(JGJ94—2008), 單樁豎向極限承載力…

python函數的作用降低編程復雜度_Python語言程序設計 (第11期) 測驗5: 函數和代碼復用...

共10道單選題和2道編程題&#xff0c;限答1次、限時50分鐘選擇題1.以下選項不是函數作用的是&#xff1a;???????????????????????????????????????????????????????????????????????????????…

restful解決什么問題_當您陷入RESTful,WordPress和一個困難的地方時,如何解決CMS問題...

restful解決什么問題by Jessica Duffin Wolfe杰西卡達芬沃爾夫(Jessica Duffin Wolfe) 當您陷入RESTful&#xff0c;WordPress和一個困難的地方時&#xff0c;如何解決CMS問題 (How to solve a CMS problem when you’re caught between RESTful, WordPress, and a hard place…

InfluxDB的HTTP API寫入操作

一、說明 為了方便&#xff0c;本文主要使用curl來發起http請求&#xff0c;示例當中也是使用curl這個工具來模擬HTTP 請求。 在實際使用中&#xff0c;可以將請求寫入代碼中&#xff0c;通過其他編程語言來模擬HTTP請求。 二、InfluxDB通過HTTP API操作數據庫 1&#xff09;建…

揭開勒索軟件的真面目

一、前言 2013年9月&#xff0c;戴爾公司的SecureWorks威脅應對部門&#xff08;CTU&#xff09;發現了一種名為“CryptoLocker”的勒索軟件&#xff0c;它以郵件附件形式分發&#xff0c;感染計算機并加密近百種格式文件&#xff08;包括電子表格、數據庫、圖片等&#xff09;…

leetcode486. 預測贏家(動態規劃)

給定一個表示分數的非負整數數組。 玩家1從數組任意一端拿取一個分數&#xff0c;隨后玩家2繼續從剩余數組任意一端拿取分數&#xff0c;然后玩家1拿&#xff0c;……。每次一個玩家只能拿取一個分數&#xff0c;分數被拿取之后不再可取。直到沒有剩余分數可取時游戲結束。最終…

w550官方例程_急!求索愛w550的刷機所需要的所有文件! 全部分送上!

展開全部W550c行貨軟件升級使用國內行貨W550c手機的朋友&#xff0c;將來是可以在62616964757a686964616fe58685e5aeb931333238646330官方網站使用隨機數據線免費升級的&#xff0c;目前W550c的最新版本是R4AB048但是由于目前官方網站還未提供&#xff0c;大家敬請期待。W550c索…

python的xpath用法介紹_python爬蟲之xpath的基本使用詳解

本篇文章主要介紹了python爬蟲之xpath的基本使用詳解&#xff0c;現在分享給大家&#xff0c;也給大家做個參考。一起過來看看吧一、簡介XPath 是一門在 XML 文檔中查找信息的語言。XPath 可用來在 XML 文檔中對元素和屬性進行遍歷。XPath 是 W3C XSLT 標準的主要元素&#xff…

楊波 微服務技術專家_專家稱,這些是最有效的微服務測試策略

楊波 微服務技術專家by Jake Lumetta杰克盧米塔(Jake Lumetta) 專家稱&#xff0c;這些是最有效的微服務測試策略 (These are the most effective microservice testing strategies, according to the experts) Testing microservices is hard. More specifically, end-to-end…

LRU算法實現

LRU是Last Recent Used 縮寫&#xff0c;做為一種緩存算法&#xff0c;將最近較少使用的緩存失效。memcache采用了該算法。如下采用了一種PHP的實現方式。該算法將每次新增的內容&#xff0c;放到緩存頂部&#xff0c;達到緩存極限時&#xff0c;將緩存底部的內容清除。可以通過…

Java中的阻塞隊列-LinkedBlockingQueue(二)

原文地址&#xff1a;http://benjaminwhx.com/2018/05/11/%E3%80%90%E7%BB%86%E8%B0%88Java%E5%B9%B6%E5%8F%91%E3%80%91%E8%B0%88%E8%B0%88LinkedBlockingQueue/ 在集合框架里&#xff0c;想必大家都用過ArrayList和LinkedList&#xff0c;也經常在面試中問到他們之間的區別。…

自動加密企業關鍵業務數據 賽門鐵克推出全新信息保護解決方案

最新推出的Symantec Information Centric Security解決方案&#xff0c;能夠幫助企業隨時隨地對數據進行自動加密、跟蹤和撤銷&#xff0c;提供卓越的可見性和管控力 近日&#xff0c;全球網絡安全領域的領導者賽門鐵克公司宣布推出一款全新的高級信息保護工具 Symantec Inform…

leetcode312. 戳氣球(動態規劃)

有 n 個氣球&#xff0c;編號為0 到 n-1&#xff0c;每個氣球上都標有一個數字&#xff0c;這些數字存在數組 nums 中。 現在要求你戳破所有的氣球。如果你戳破氣球 i &#xff0c;就可以獲得 nums[left] * nums[i] * nums[right] 個硬幣。 這里的 left 和 right 代表和 i 相鄰…

碳鋼腐蝕速率計算公式_鎂合金輪轂螺栓連接的電偶腐蝕行為

環境污染和能源短缺促使日益發達的汽車工業大力推進構件輕量化&#xff0c;鎂合金是最輕的結構材料之一&#xff0c;構件采用鎂合金制造可以在減重的同時不降低結構強度&#xff0c;受到汽車工業的青睞。輪轂作為汽車的主要組成部件&#xff0c;其輕量化是汽車節能減排的有效途…

第七周總結

2019第七周作業 本周作業頭 這個作業屬于那個課程C語言程序設計II這個作業要求在哪里https://edu.cnblogs.com/campus/zswxy/computer-scienceclass1-2018/homework/2939我在這個課程的目標是理解指針數組和地址之前的關系及應用這個作業在那個具體方面幫助我實現目標practice參…

python大綱圖_Python課程大綱

課程大綱被分成6個部分&#xff0c;每個部分又被分解為多個階段&#xff0c; 而每個階段包含了多個Try, Workshop, FactToFace, Apply. 這里只列出部分&#xff0c;和階段&#xff1a;CHAPTER 0 : 預科[可選]Linux使用&#xff0c;常用CMD&#xff0c;服務配置&#xff0c;IDE&…

如何使用Google Authenticator在ASP.NET Core中設置兩因素身份驗證

介紹 (Introduction) In this article, we are going to learn how to perform two-factor authentication in an ASP.NET Core application using the Google Authenticator app.在本文中&#xff0c;我們將學習如何使用Google Authenticator應用程序在ASP.NET Core應用程序中…

280. Wiggle Sort

最后更新 二刷 這個題做得真蠢。上來想的復雜了&#xff0c;想的是quick sort之類的&#xff0c;然后一個一個交換。 實際上直接交換就行。。沒啥特別的。 回頭看一刷也是同樣的思考過程 宿命論啊。。 Time: O(n) Space: O(1) public class Solution {public void wiggleSort(i…