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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

LeetCode 97. 交错字符串(DP)

發布時間:2024/7/5 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 97. 交错字符串(DP) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1. 題目

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

示例 1: 輸入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac" 輸出: true示例 2: 輸入: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc" 輸出: false

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

2. 解題

  • 交錯組成:s1、s2 每個字符都要先從左邊開始拿,次序隨意,看能否組成 s3
  • dp[i][j] 表示 s1 取了 i 個,s2 取了 j 個,可以匹配 s3 前面的
  • 那么假設 dp[i][j] 已求出可以匹配,那么下一個狀態就是取 s1 的第 i+1個(if s1[i] == s3[i+j]),或者取 s2 的第 j+1 個(if s2[j] == s3[i+j])
class Solution { //C++ public:bool isInterleave(string s1, string s2, string s3) {if(s1.size()+s2.size() != s3.size())return false;int m = s1.size(), n = s2.size(), i, j, k;vector<vector<int>> dp(m+1,vector<int>(n+1,0));// dp[i][j] 表示 s1取了i個,s2取了 j 個,可以匹配s3前面的dp[0][0] = 1;for(i = 0; i < m; i++) if(s1[i] == s3[i])dp[i+1][0] = 1;elsebreak;for(i = 0; i < n; i++)if(s2[i] == s3[i])dp[0][i+1] = 1;elsebreak;for(i = 1; i <= m; ++i)for(j = 1; j <= n; j++){ //要求 i,j 狀態,該狀態下s3是第i+j個字符k = i+j;if(s1[i-1] == s3[k-1])//s1的第i個字符匹配dp[i][j] |= dp[i-1][j];if(s2[j-1] == s3[k-1])//s2的第j個字符匹配dp[i][j] |= dp[i][j-1];}return dp[m][n];} };

4 ms 6.9 MB

  • python3 解答
class Solution:def isInterleave(self, s1: str, s2: str, s3: str) -> bool:m, n = len(s1), len(s2)if m+n != len(s3):return False;dp = [[0]*(n+1) for _ in range(m+1)]dp[0][0] = 1for i in range(m):if s1[i] == s3[i]:dp[i+1][0] = 1else:breakfor i in range(n):if s2[i] == s3[i]:dp[0][i+1] = 1else:breakfor i in range(1,m+1):for j in range(1,n+1):k = i+jif s1[i-1] == s3[k-1]:dp[i][j] |= dp[i-1][j]if s2[j-1] == s3[k-1]:dp[i][j] |= dp[i][j-1]return True if dp[m][n] else False

64 ms 13.5 MB

總結

以上是生活随笔為你收集整理的LeetCode 97. 交错字符串(DP)的全部內容,希望文章能夠幫你解決所遇到的問題。

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