国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

力扣_字符串7—交錯字符串

這篇具有很好參考價值的文章主要介紹了力扣_字符串7—交錯字符串。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

題目

給定三個字符串 s 1 、 s 2 、 s 3 s1、s2、s3 s1、s2、s3,請你幫忙驗證 s 3 s3 s3 是否是由 s 1 s1 s1 s 2 s2 s2 交錯 組成的。

兩個字符串 s s s t t t 交錯 的定義與過程如下,其中每個字符串都會被分割成若干 非空 子字符串:文章來源地址http://www.zghlxwxcb.cn/news/detail-828394.html

  • s = s 1 + s 2 + . . . + s n s = s1 + s2 + ... + sn s=s1+s2+...+sn
  • t = t 1 + t 2 + . . . + t m t = t1 + t2 + ... + tm t=t1+t2+...+tm
  • ∣ n ? m ∣ < = 1 |n - m| <= 1 n?m<=1
  • 交錯 是 s 1 + t 1 + s 2 + t 2 + s 3 + t 3 + . . . s1 + t1 + s2 + t2 + s3 + t3 + ... s1+t1+s2+t2+s3+t3+... 或者 t 1 + s 1 + t 2 + s 2 + t 3 + s 3 + . . . t1 + s1 + t2 + s2 + t3 + s3 + ... t1+s1+t2+s2+t3+s3+...

方法

  • 動態(tài)規(guī)劃
    • s 1 、 s 2 、 s 3 s1、s2、s3 s1、s2s3 長度分別為 n 1 、 n 2 、 n n1、n2、n n1、n2、n
    • 定義 d p n 1 + 1 , n 2 + 2 dp_{n1+1,n2+2} dpn1+1,n2+2? 數(shù)組, d p [ i ] [ j ] dp[i][j] dp[i][j] 表示 s 3 s3 s3 i + j i+j i+j 個字符是否由 s 1 s1 s1 i i i 個字符和 s 2 s2 s2 j j j 個字符交錯組成
    • s 3 [ i + j ? 1 ] = = s 1 [ i ? 1 ] s3[i+j-1] == s1[i-1] s3[i+j?1]==s1[i?1],則 d p [ i ] [ j ] = d p [ i ? 1 ] [ j ] dp[i][j] = dp[i-1][j] dp[i][j]=dp[i?1][j]
    • s 3 [ i + j ? 1 ] = = s 2 [ j ? 1 ] s3[i+j-1] == s2[j-1] s3[i+j?1]==s2[j?1],則 d p [ i ] [ j ] = d p [ i ] [ j ? 1 ] dp[i][j] = dp[i][j-1] dp[i][j]=dp[i][j?1]
    • 空間復(fù)雜度優(yōu)化:滾動數(shù)組
      • 定義 d p n 2 + 2 dp_{n2+2} dpn2+2? 數(shù)組
      • d p [ j ] dp[j] dp[j] 上一次循環(huán)的值表示原來的 d p [ i ? 1 ] [ j ] dp[i-1][j] dp[i?1][j]

代碼

class Solution {
public:
    // bool isInterleave(string s1, string s2, string s3) {
    //     int n1 = s1.size();
    //     int n2 = s2.size();
    //     int n = s3.size();
    //     if(n1+n2 != n)
    //         return false;
    //     vector<vector<bool>> dp(n1+1, vector<bool>(n2+1));
    //     dp[0][0] = true;
    //     for(int i = 0; i <= n1; i++){
    //         for(int j = 0; j <= n2; j++){
    //             if(i > 0){
    //                 dp[i][j] = dp[i][j] || (dp[i-1][j] && s1[i-1] == s3[i+j-1]);
    //             }
    //             if(j > 0){
    //                 dp[i][j] = dp[i][j] || (dp[i][j-1] && s2[j-1] == s3[i+j-1]);
    //             }
    //         }
    //     }
    //     return dp[n1][n2];
    // }
    bool isInterleave(string s1, string s2, string s3) {
        int n1 = s1.size();
        int n2 = s2.size();
        int n = s3.size();
        if(n1+n2 != n)
            return false;
        vector<bool> dp(n2+1);
        dp[0] = true;
        for(int i = 0; i <= n1; i++){
            for(int j = 0; j <= n2; j++){
                if(i > 0){
                    dp[j] = (dp[j] && s1[i-1] == s3[i+j-1]);
                }
                if(j > 0){
                    dp[j] = dp[j] || (dp[j-1] && s2[j-1] == s3[i+j-1]);
                }
            }
        }
        return dp[n2];
    }
};

到了這里,關(guān)于力扣_字符串7—交錯字符串的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 算法學(xué)習(xí)——LeetCode力扣字符串篇

    算法學(xué)習(xí)——LeetCode力扣字符串篇

    344. 反轉(zhuǎn)字符串 - 力扣(LeetCode) 描述 編寫一個函數(shù),其作用是將輸入的字符串反轉(zhuǎn)過來。輸入字符串以字符數(shù)組 s 的形式給出。 不要給另外的數(shù)組分配額外的空間,你必須原地修改輸入數(shù)組、使用 O(1) 的額外空間解決這一問題。 示例 示例 1: 輸入:s = [“h”,“e”,“l(fā)”

    2024年02月20日
    瀏覽(21)
  • 【算法】力扣【動態(tài)規(guī)劃,LCS】1312. 讓字符串成為回文串的最少插入次數(shù)

    1312. 讓字符串成為回文串的最少插入次數(shù) 本文探討的是力扣(LeetCode)上的第1312題:讓字符串成為回文串的最少插入次數(shù)。這是一道屬于動態(tài)規(guī)劃類別下的困難題目,通常以回文串相關(guān)的操作來衡量算法的優(yōu)化和執(zhí)行效率。 問題的核心是給定一個字符串 s ,你可以在任意位

    2024年01月23日
    瀏覽(30)
  • 【算法思考記錄】動態(tài)規(guī)劃入門!力扣2606. 找到最大開銷的子字符串【Python3、動態(tài)規(guī)劃】

    原題鏈接 動態(tài)規(guī)劃(Dynamic Programming,簡稱 DP)是一種通過將原問題分解為相互重疊的子問題并只解決一次的方法來解決問題的算法優(yōu)化技術(shù)。動態(tài)規(guī)劃通常用于優(yōu)化遞歸問題,通過存儲子問題的解來避免重復(fù)計算,從而顯著提高算法的效率。 動態(tài)規(guī)劃的基本思想是將原問題

    2024年02月03日
    瀏覽(25)
  • 【算法|動態(tài)規(guī)劃No.28】leetcode1312. 讓字符串成為回文串的最少插入次數(shù)

    【算法|動態(tài)規(guī)劃No.28】leetcode1312. 讓字符串成為回文串的最少插入次數(shù)

    個人主頁:兜里有顆棉花糖 歡迎 點贊?? 收藏? 留言? 加關(guān)注??本文由 兜里有顆棉花糖 原創(chuàng) 收錄于專欄【手撕算法系列專欄】【LeetCode】 ??本專欄旨在提高自己算法能力的同時,記錄一下自己的學(xué)習(xí)過程,希望對大家有所幫助 ??希望我們一起努力、成長,共同進步。

    2024年02月06日
    瀏覽(22)
  • 【leetcode 力扣刷題】字符串匹配之經(jīng)典的KMP?。?!

    【leetcode 力扣刷題】字符串匹配之經(jīng)典的KMP?。?!

    以下是能用KMP求解的算法題,KMP是用于字符串匹配的經(jīng)典算法【至今沒學(xué)懂………啊啊啊】 題目鏈接:28. 找出字符串中第一個匹配項的下標(biāo) 題目內(nèi)容: 題意還是很好理解的,要在字符串haystack中查找一個完整的needle,即字符串匹配。 暴力求解就是用 兩層循環(huán) :haystack從第

    2024年02月09日
    瀏覽(33)
  • 【leetcode 力扣刷題】字符串翻轉(zhuǎn)合集(全部反轉(zhuǎn)///部分反轉(zhuǎn))

    【leetcode 力扣刷題】字符串翻轉(zhuǎn)合集(全部反轉(zhuǎn)///部分反轉(zhuǎn))

    題目鏈接:344. 反轉(zhuǎn)字符串 題目內(nèi)容: 題目中重點強調(diào)了必須 原地修改 輸入數(shù)組,即不能新建一個數(shù)組來完成字符串的反轉(zhuǎn)。我們注意到: 原來下標(biāo)為0的,反轉(zhuǎn)后是size - 1【原來下標(biāo)是size - 1的,反轉(zhuǎn)后是0】; 原來下標(biāo)是1的,反轉(zhuǎn)后是size - 2【原來下標(biāo)是size -2的,反轉(zhuǎn)后

    2024年02月11日
    瀏覽(33)
  • 有效的括號字符串(力扣)動態(tài)規(guī)劃、貪心 JAVA

    有效的括號字符串(力扣)動態(tài)規(guī)劃、貪心 JAVA

    給你一個只包含三種字符的字符串,支持的字符類型分別是 ‘(’、‘)’ 和 ‘*’。請你檢驗這個字符串是否為有效字符串,如果是有效字符串返回true 。 有效字符串符合如下規(guī)則: 任何左括號 ‘(’ 必須有相應(yīng)的右括號 ‘)’。 任何右括號 ‘)’ 必須有相應(yīng)的左括號 ‘(’

    2024年02月14日
    瀏覽(32)
  • 【算法詳解】力扣415.字符串相加

    力扣鏈接:力扣415.字符串相加 給定兩個字符串形式的非負整數(shù) num1 和num2 ,計算它們的和并同樣以字符串形式返回。 你不能使用任何內(nèi)建的用于處理大整數(shù)的庫(比如 BigInteger), 也不能直接將輸入的字符串轉(zhuǎn)換為整數(shù)形式。 示例 1: 輸入:num1 = “11”, num2 = “123” 輸出:

    2024年01月22日
    瀏覽(31)
  • 力扣熱門算法題 349. 兩個數(shù)組的交集,387. 字符串中的第一個唯一字符,394. 字符串解碼

    力扣熱門算法題 349. 兩個數(shù)組的交集,387. 字符串中的第一個唯一字符,394. 字符串解碼

    349. 兩個數(shù)組的交集,387. 字符串中的第一個唯一字符,394. 字符串解碼,每題做詳細思路梳理,配套PythonJava雙語代碼, 2024.04.02?可通過leetcode所有測試用例。 目錄 349. 兩個數(shù)組的交集 解題思路 完整代碼 Python Java 387. 字符串中的第一個唯一字符 解題思路 完整代碼 Python Java

    2024年04月08日
    瀏覽(31)
  • Python每日一練(20230420) 數(shù)組逐位判斷、交錯字符串、二進制求和

    Python每日一練(20230420) 數(shù)組逐位判斷、交錯字符串、二進制求和

    目錄 1. 數(shù)組逐位判斷???? 2. 交錯字符串?????? 3. 二進制求和???? ?? 每日一練刷題專欄??? Golang每日一練 專欄 Python每日一練 專欄 C/C++每日一練 專欄 Java每日一練 專欄 比如有以下數(shù)組: a1: 1,0,0,1,0,0,0,1 a2: 0,0,0,0,1,1,1,1 a3: 0,1,0,1,0,1,0,0 a4: 1,0,1,1,1,1,0,0 a5: ....... 抓取三個數(shù)

    2024年02月15日
    瀏覽(90)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包