zoukankan      html  css  js  c++  java
  • 19.2.27 [LeetCode 97] Interleaving String

    Given s1s2s3, find whether s3 is formed by the interleaving of s1 and s2.

    Example 1:

    Input: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbcbcac"
    Output: true
    

    Example 2:

    Input: s1 = "aabcc", s2 = "dbbca", s3 = "aadbbbaccc"
    Output: false

    题意

    给出s1,s2,s3,判断是否能从s3中抽取出若干个字符以原顺序组成字符串和s1相等,并且s3剩下的部分正好组成了s2

    题解

    自然而然想到的dp,很慢

     1 class Solution {
     2 public:
     3     bool isInterleave(string s1, string s2, string s3) {
     4         int l1=s1.length(),l2=s2.length(),l3=s3.length();
     5         vector<vector<vector<bool>>>dp(l1+1,vector<vector<bool>>(l2+1,vector<bool>(l3+1,false)));
     6         dp[0][0][0]=true;
     7         for(int i=0;i<=l1;i++)
     8             for(int j=0;j<=l2;j++){
     9                 if(i>=1&&dp[i-1][j][i+j-1]&&s1[i-1]==s3[i+j-1])
    10                     dp[i][j][i+j]=true;
    11                 else if(j>=1&&dp[i][j-1][i+j-1]&&s2[j-1]==s3[i+j-1])
    12                     dp[i][j][i+j]=true;
    13             }
    14         return dp[l1][l2][l3];
    15     }
    16 };
    View Code

    好吧,我是傻x

     1 class Solution {
     2 public:
     3     bool isInterleave(string s1, string s2, string s3) {
     4         int l1=s1.length(),l2=s2.length(),l3=s3.length();
     5         if(l1+l2!=l3)return false;
     6         vector<vector<bool>>dp(l1+1,vector<bool>(l3+1,false));
     7         dp[0][0]=true;
     8         for(int i=0;i<=l1;i++)
     9             for(int j=0;j<=l2;j++){
    10                 if(i>=1&&dp[i-1][i+j-1]&&s1[i-1]==s3[i+j-1])
    11                     dp[i][i+j]=true;
    12                 else if(j>=1&&dp[i][i+j-1]&&s2[j-1]==s3[i+j-1])
    13                     dp[i][i+j]=true;
    14             }
    15         return dp[l1][l3];
    16     }
    17 };
    View Code
  • 相关阅读:
    docker内存和cpu调试
    docker网络之overlay
    docker网络之bridge
    kubernete的证书总结
    docker网络之macvlan
    理解kubernetes环境的iptables
    前端面试题和答案
    软件项目技术点(25)——提升性能之检测绘制范围
    setTimeout的实现原理以及setTimeout(0)的使用场景
    HTML5新特性之WebSocket
  • 原文地址:https://www.cnblogs.com/yalphait/p/10446456.html
Copyright © 2011-2022 走看看