https://oj.leetcode.com/problems/interleaving-string/

刚开始用递归做,但是超时了

class Solution {
public:
bool flag; bool isInterleave(string s1, string s2, string s3) {
flag = false;
if(s1.size() + s2.size() != s3.size())
return flag; subIsInterleave(s1,s2,s3,,,);
return flag;
} void subIsInterleave(string &s1, string &s2, string &s3, int p1, int p2, int p3)
{
if(p1 == s1.size() && p2 == s2.size() && p3 == s3.size())
{
flag = true;
return;
}
if(!(p1 <= s1.size() && p2 <= s2.size() && p3 < s3.size()))
return; if(s3[p3] != s1[p1] && s3[p3] != s2[p2])
{
return;
}
if(p1 < s1.size() && s3[p3] == s1[p1] && flag == false)
subIsInterleave(s1,s2,s3,p1 + , p2,p3 + );
if(p2 < s2.size() && s3[p3] == s2[p2] && flag == false)
subIsInterleave(s1,s2,s3,p1,p2+,p3 + );
}
};

按照二维动态规划的思路,用两层for循环做

记 flag[i][j] 为 s1[0,i] s2[0,j] 匹配 s3[0,i+j] 则:

flag[i][j] = s1[i-1] == s3[i+j-1] && flag[i-1][j]  || s2[j-1] == s3[i+j-1] && flag[i][j-1];

代码如下:

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

LeetCode OJ-- Interleaving String **@的更多相关文章

  1. 【leetcode】Interleaving String

    Interleaving String Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. Fo ...

  2. [LeetCode] 97. Interleaving String 交织相错的字符串

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1and s2. Example 1: Input: s1 = ...

  3. [Leetcode][JAVA] Interleaving String

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...

  4. 【leetcode】 Interleaving String (hard)

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...

  5. leetcode 97 Interleaving String ----- java

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ...

  6. [leetcode]97. Interleaving String能否构成交错字符串

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. Input: s1 = "aabc ...

  7. Java for LeetCode 097 Interleaving String 【HARD】

    Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example, Given: s1 ...

  8. Leetcode#97 Interleaving String

    原题地址 转化为二维地图游走问题. 比如s1="abab",s2="aab",s3="aabaabb",则有如下地图,其中"^&q ...

  9. 【LeetCode OJ】Interleaving String

    Problem Link: http://oj.leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 ...

  10. [LeetCode] Interleaving String - 交织的字符串

    题目如下:https://oj.leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 is form ...

随机推荐

  1. 第1章 VMware中安装CentOS7

    目录 1.1 下载CentOS7安装包 1.2 VMware中新建虚拟机 1.3 安装操作系统 本章讲解在VMware中安装CentOS虚拟机的步骤.使用的VMware Workstation版本为1 ...

  2. 三分钟明白 Activity工作流 -- java运用

    一. 什么是工作流 以请假为例,现在大多数公司的请假流程是这样的 员工打电话(或网聊)向上级提出请假申请——上级口头同意——上级将请假记录下来——月底将请假记录上交公司——公司将请假录入电脑 采用工作 ...

  3. A1055 The World's Richest(25 分)

    A1055 The World's Richest(25 分) Forbes magazine publishes every year its list of billionaires based ...

  4. 大数运算:HDU-1042-N!(附N!位数的计算)

    解题心得: 这里使用了10000进制.很明显,因为是n!所以单个最大的数是10000*10000,使用万进制. 可以借鉴高精度的加法,单个乘了之后在进位. 很坑的一点,0!=1,数学不好WA了三次,尴 ...

  5. 按位与&、或|、异或^等运算方法

    (转载) 按位与运算符(&) 参加运算的两个数据,按二进制位进行“与”运算. 运算规则:0&0=0;   0&1=0;    1&0=0;     1&1=1; ...

  6. Java模拟音乐播放器 暂停与重新播放——线程如何控制另外一个线程的状态

    package com.example.Thread; import javax.swing.*; import java.awt.*; import java.awt.event.ActionEve ...

  7. Android如何添加多张引导页

    摘要:项目需要添加多张引导页,所以在网上搜集了一些资料并整理好. Step1 添加一个GuideActivity. 其实这个引导页无非就是一个Activity,里面有一个ViewPager而已.多张图 ...

  8. Python框架之Django学习笔记(十六)

    Django框架之表单(续) 今天简直无力吐槽了,去了香山,结果和网上看到的简直是天壤之别啊,说好的香山的枫树呢?说好的香山的红叶呢?说好的漫山遍野一片红呢?本以为在山上,一口气爬上去,沿路基本都是翠 ...

  9. IOS开发---菜鸟学习之路--(七)-自定义UITableViewCell

    本篇将介绍如何自定义 UITableViewCell 首先选择新建文件 可以直接使用快捷键 COMMAND+n打开新建页面,然后选Objective-C class 然后选择继承之UITableVie ...

  10. 记一次Entity Framework 项目的优化过程

    在博客园看了不少其他大神的经验.今天也抽空贡献点自己的经验(并不是说自己也是大神..小弟还只新手程序员去年才毕业的) 好了废话不多说,直接进入主题.(具体的好坏各位看官就随便看看吧..没有什么好坏之分 ...