學渣帶你刷Leetcode0097交錯字符串

題目描述

給定三個字符串 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
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

白話題目:
 

算法:

 

詳細解釋關注 B站  【C語言全代碼】學渣帶你刷Leetcode 不走丟 https://www.bilibili.com/video/BV1C7411y7gB

C語言完全代碼

bool isInterleave(char * s1, char * s2, char * s3){
    int len1 = strlen(s1);
    int len2 = strlen(s2);
    int len3 = strlen(s3);
    bool dp[128][128] = {false};

    if (len1 + len2 != len3) {
        return false;
    }
    
    dp[0][0] = true;
    for (int i = 1; i <= len1; i++) {
        if (s1[i - 1] == s3[i - 1] && dp[i - 1][0] == true) 
            dp[i][0] = true;
    }

    for (int j = 1; j <= len2; j++) {
        if (s2[j - 1] == s3[j - 1] && dp[0][j - 1] == true) 
            dp[0][j] = true;
             
    }

    for (int m = 1; m <= len1; m++) {
        for (int n = 1; n <= len2; n++) {
            if (s1[m - 1] == s3[m + n -1] && dp[m - 1][n] == true)
                dp[m][n] = true;
            
            if (s2[n - 1] == s3[m + n -1] && dp[m][n - 1] == true)
                dp[m][n] = true;
        }
    }

    return dp[len1][len2];
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章