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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 97: 交错字符串

發(fā)布時(shí)間:2023/12/13 编程问答 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 97: 交错字符串 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?

這里我們考慮用 s1和 s2的某個(gè)前綴是否能形成 s3?的一個(gè)前綴。

這個(gè)方法的前提建立于:判斷一個(gè) s3的前綴(用下標(biāo) k表示),能否用 s1和 s2?的前綴(下標(biāo)分別為 i和 j),僅僅依賴于 s1 前 i個(gè)字符和 s2?前 j個(gè)字符,而與后面的字符無關(guān)。

為了實(shí)現(xiàn)這個(gè)算法, 我們將使用一個(gè) 2D 的布爾數(shù)組 dp?。dp[i][j]表示用 s1的前 i和 s2的前 j個(gè)字符,總共 i+j個(gè)字符,是否交錯(cuò)構(gòu)成 s3的前綴。為了求出 dp[i][j]?,我們需要考慮 兩?種情況:

s1的第 i 個(gè)字符和 s2?的第 j 個(gè)字符都不能匹配 s3的第 k?個(gè)字符,其中 k=i + j?。這種情況下,s1和 s2的前綴無法交錯(cuò)形成 s3長(zhǎng)度為 k 的前綴。因此,我們讓 dp[i][j]為 False。

s1的第 i 個(gè)字符或者 s2的第 j 個(gè)字符可以匹配 s3的第 k個(gè)字符,其中 k=i+j?。假設(shè)匹配的字符是 x?且與 s1的第 i?個(gè)字符匹配,我們就需要把 x放在已經(jīng)形成的交錯(cuò)字符串的最后一個(gè)位置。此時(shí),為了我們必須確保 s1的前 (i-1)個(gè)字符和 s2的前 j 個(gè)字符能形成 s3的一個(gè)前綴。類似的,如果我們將 s2的第 j個(gè)字符與 s3的第 k 個(gè)字符匹配,我們需要確保 s1的前 i 個(gè)字符和 s2的前 (j-1)?個(gè)字符能形成 s3的一個(gè)前綴,我們就讓 dp[i][j]為True 。

?

public class Solution {public bool IsInterleave(string s1, string s2, string s3){if((s1.Length + s2.Length) != s3.Length)return false;bool[,] dp = new bool[s1.Length + 1, s2.Length + 1];for(int i = 0; i <= s1.Length; i++){for(int j = 0; j <= s2.Length; j++){if(i == 0 && j == 0)dp[i, j] = true;else if(i == 0)dp[i, j] = dp[i, j - 1] && s2[j - 1] == s3[i+ j - 1];else if(j == 0)dp[i, j] = dp[i - 1, j] && s1[i - 1] == s3[i+ j - 1];elsedp[i, j] = (dp[i - 1, j] && s1[i - 1] == s3[i+ j - 1]) || dp[i, j - 1] && s2[j - 1] == s3[i+ j - 1];}}return dp[s1.Length, s2.Length];} }

復(fù)雜度分析

時(shí)間復(fù)雜度:O(m \cdot n)O(m?n) 。計(jì)算 dpdp 數(shù)組需要 m*nm?n 的時(shí)間。

空間復(fù)雜度:O(m \cdot n)O(m?n)。2 維的 dpdp 數(shù)組需要 (m+1)*(n+1)(m+1)?(n+1) 的空間。 mm 和 nn 分別是 s1s1 和 s2s2 字符串的長(zhǎng)度。

優(yōu)化:使用一維動(dòng)態(tài)規(guī)劃

這種方法與前一種方法基本一致,除了我們僅使用一維 dp數(shù)組去儲(chǔ)存前綴結(jié)果。我們利用 dp[i-1]的結(jié)果和 dp[i]之前的結(jié)果來計(jì)算 dp[i],即滾動(dòng)數(shù)組。

public bool IsInterleave(string s1, string s2, string s3){if((s1.Length + s2.Length) != s3.Length)return false;bool[] dp = new bool[s2.Length + 1];for(int i = 0; i <= s1.Length; i++){for(int j = 0; j <= s2.Length; j++){if(i==0 && j == 0)dp[j] = true;else if(i == 0)dp[j] = dp[j - 1] && s2[j - 1] == s3[i+ j - 1];else if(j == 0)dp[j] = dp[j] && s1[i - 1] == s3[i+ j - 1];elsedp[j] = (dp[j] && s1[i - 1] == s3[i+ j - 1]) || dp[j - 1] && s2[j - 1] == s3[i+ j - 1];}}return dp[s2.Length];}

?

復(fù)雜度分析

時(shí)間復(fù)雜度:O(m?n);長(zhǎng)度為 n 的 dp數(shù)組需要被填充 m 次。

空間復(fù)雜度:O(n);n是字符串 s1的長(zhǎng)度

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的LeetCode 97: 交错字符串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美性受xxxxxx黑人xyx性爽 | 国产精品一区在线观看 | 日韩中文字幕精品视频 | 亚洲啪视频 | 免费看的黄色录像 | 日本xxxx在线观看 | 午夜在线精品 | 一区二区三区在线免费观看视频 | 成片免费观看视频 | 成人精品在线观看视频 | 国产在线播放一区二区 | 五月天导航| 日本少妇在线观看 | 91亚色 | yjizz视频网 国产乱人对白 | 蜜臀尤物一区二区三区直播 | 日韩中文字幕视频在线观看 | 国产精品久久久久久久久久久不卡 | 久久4 | 久久毛片网站 | 欧美激情综合色综合啪啪五月 | 成人网页在线观看 | 国产成人精品一区二区三 | 五月婷婷激情四射 | 欧美99久久精品乱码影视 | 人成在线视频 | 又色又爽又黄gif动态图 | 欧美亚洲综合久久 | 一区二区在线免费观看 | 在线观看羞羞漫画 | 国产一区二区在线免费 | 青春草久久| 51精品国自产在线 | 成人性生活毛片 | 国产一区二区三区 | 好吊妞精品视频 | 国产精品第5页 | 天堂网中文 | 日本久久精品 | 荷兰女人裸体性做爰 | 国产免费视频 | 98久久| 一本到免费视频 | 日本欧美另类 | 成年免费在线观看 | 15p亚洲| 老公吃小头头视频免费观看 | 曰批免费视频播放免费 | 中文字幕精品在线观看 | 久久婷婷丁香 | 久久精品久久久 | 色偷偷欧美 | 影音先锋伦理片 | 欧美熟妇7777一区二区 | 久久久久久久穴 | 亚洲精品手机在线 | 日韩亚洲在线观看 | 3d动漫精品h区xxxxx区 | 少妇按摩一区二区三区 | 久久网站免费看 | 亚欧三级 | www.香蕉网 | 午夜污污 | 99欧美| 91极品国产 | 在线91观看 | 可以免费观看的av | 国产成人免费视频 | 啪啪免费小视频 | 中国黄色大片 | 熟女少妇精品一区二区 | 日日摸夜夜爽 | 亚洲人视频在线观看 | 亚洲综合色自拍一区 | 在线不卡毛片 | 91九色网| 亚洲精品成人 | 日本夜夜操 | 精品国产精品网麻豆系列 | 国产剧情av引诱维修工 | 美乳在线播放 | 亚洲a√| 亚洲高清在线免费观看 | 日韩电影福利 | 中文字幕av一区二区三区 | 亚洲第一中文字幕 | 久久久高清视频 | 在线观看免费中文字幕 | www.欧美激情| 99久久久精品免费观看国产 | 日韩久久成人 | 麻豆成人免费 | 一道本在线视频 | 国产乱人对白 | 国产chinesehd精品露脸 | 亚洲精品另类 | 精品影片一区二区入口 | 永久免费无码av网站在线观看 | 手机av网址|