zoukankan      html  css  js  c++  java
  • 交叉字符串

    题目:样例

    比如 s1 = "aabcc" s2 = "dbbca"

        - 当 s3 = "aadbbcbcac",返回  true.

        - 当 s3 = "aadbbbaccc", 返回 false.

    代码:

    class Solution {
    public:
    /**
    * Determine whether s3 is formed by interleaving of s1 and s2.
    * @param s1, s2, s3: As description.
    * @return: true of false.
    */
    bool isInterleave(string s1, string s2, string s3) {
    // write your code here
    if(s3.length()!=s1.length()+s2.length())
    return false;
    if(s1.length()==0)
    return s2==s3;
    if(s2.length()==0)
    return s1==s3;
    vector<vector<bool> > dp(s1.length()+1,vector<bool>(s2.length()+1,false));
    dp[0][0] = true;
    for(int i=1;i<=s1.length();i++)
    dp[i][0] = dp[i-1][0]&&(s3[i-1]==s1[i-1]);
    for(int i=1;i<=s2.length();i++)
    dp[0][i] = dp[0][i-1]&&(s3[i-1]==s2[i-1]);
    for(int i=1;i<=s1.length();i++)
    {
    for(int j=1;j<=s2.length();j++)
    {
    int t = i+j;
    if(s1[i-1]==s3[t-1])
    dp[i][j] = dp[i][j]||dp[i-1][j];
    if(s2[j-1]==s3[t-1])
    dp[i][j] = dp[i][j]||dp[i][j-1];
    }
    }
    return dp[s1.length()][s2.length()];
    }
    };

    截图:

  • 相关阅读:
    随机小错2_0527
    随计小错
    C++实现读写文件
    03-树2 List Leaves (25 分)
    获取毫秒级的时间戳
    new对象时,类名后加括号与不加括号的区别
    FoxMail 7.2的邮件存储目录修改
    C/C++ 开源算法库
    VS2015的安装
    脏内存导致BUG的问题
  • 原文地址:https://www.cnblogs.com/w1500802028/p/7296462.html
Copyright © 2011-2022 走看看