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()];
    }
    };

    截图:

  • 相关阅读:
    (转)HTTP协议
    函数深入理解---函数的定义方式
    DOM模型和事件处理---事件处理
    DOM模型和事件处理---节点操作
    DOM模型和事件处理---基本操作
    常用知识
    窗口对象
    简单的事件处理
    Grunt
    基本操作
  • 原文地址:https://www.cnblogs.com/w1500802028/p/7296462.html
Copyright © 2011-2022 走看看