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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

0动态规划中等 LeetCode97. 交错字符串

發布時間:2023/12/14 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 0动态规划中等 LeetCode97. 交错字符串 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

97. 交錯字符串

描述

給定三個字符串 s1、s2、s3,請你幫忙驗證 s3 是否是由 s1 和 s2 交錯 組成的。
兩個字符串 s 和 t 交錯 的定義與過程如下,其中每個字符串都會被分割成若干 非空 子字符串:
s = s1 + s2 + … + sn
t = t1 + t2 + … + tm
|n - m| <= 1
交錯 是 s1 + t1 + s2 + t2 + s3 + t3 + … 或者 t1 + s1 + t2 + s2 + t3 + s3 + …
提示:a + b 意味著字符串 a 和 b 連接。

分析

不知道大家對不同路徑的題還有沒有印象,本題也可以利用其思想求解:
target 的每個字符都是從 s1(向下)或者 s2(向右)拿到的,所以只要判斷是否存在這條 target 路徑即可;
于是可定義 boolean[][] dp ,dp[i][j] 代表 s1 前 i 個字符與 s2 前 j 個字符拼接成 s3 的 i+j 字符,也就是存在目標路徑能夠到達 i ,j ;
作者:gousiqi
鏈接:https://leetcode-cn.com/problems/interleaving-string/solution/lei-si-lu-jing-wen-ti-zhao-zhun-zhuang-tai-fang-ch/

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

總結

以上是生活随笔為你收集整理的0动态规划中等 LeetCode97. 交错字符串的全部內容,希望文章能夠幫你解決所遇到的問題。

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