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

For example,
Given:
s1 = "aabcc",
s2 = "dbbca",

When s3 = "aadbbcbcac", return true.
When s3 = "aadbbbaccc", return false.

Recurse:
Judge Small: Accepted! 
Judge Large: Time Limit Exceeded

 bool isInterleave(string s1, string s2, string s3) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
if(s1.length() == ) return s3 == s2;
if(s2.length() == ) return s3 == s1;
if(s3.length() == ) return s1.length() + s2.length() == ; if(s1[] == s3[] && s2[] != s3[])
return isInterleave(s1.substr(), s2, s3.substr());
else if(s1[] != s3[] && s2[] == s3[])
return isInterleave(s1, s2.substr(), s3.substr());
else if(s1[] == s3[] && s1[] == s3[])
return isInterleave(s1.substr(), s2, s3.substr()) || isInterleave(s1, s2.substr(), s3.substr());
else
return false;
}

2-dimension dp:

这是一个二维的动态规划,

s1 = "aabcc"
s2 = "dbbca"
s3 = "aadbbcbcac"

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

Interleaving String——是否由两个string交叉、DP的更多相关文章

  1. c# 字符串连接使用“+”和string.format格式化两种方式

    参考文章:http://www.liangshunet.com/ca/201303/218815742.htm 字符串之间的连接常用的两种是:“+”连接.string.format格式化连接.Stri ...

  2. 取两个String数组的交集

    import org.testng.annotations.Test; import java.util.HashMap; import java.util.LinkedList; import ja ...

  3. java中的堆、栈、常量池以及String类型的两种声明

    参考自http://blog.sina.com.cn/s/blog_798b04f90100ta67.html http://www.cnblogs.com/fguozhu/articles/2661 ...

  4. 两个string数组对应比较

    最近做的array string类型对比.这个可能比较复杂,用的是linq 是请教别人的,我在这里记录一下 jquery 方法里面的数组 function arrtxt() { var arrt= [ ...

  5. 【转载】 Java中String类型的两种创建方式

    本文转载自 https://www.cnblogs.com/fguozhu/articles/2661055.html Java中String是一个特殊的包装类数据有两种创建形式: String s ...

  6. Solidity两个string的比较

    有三种比较方法 方法一:比较string的哈希值方法二:先比较string的长度,再比较每个对应位置的字母是否相同方法三:先比较string的长度,再比较string的哈希值一.比较string的哈希 ...

  7. js比较两个String字符串找出不同,并将不同处高亮显示

    根据java代码改写成js,下边js文件代码: function StringBuffer() { this.__strings__ = []; }; StringBuffer.prototype.a ...

  8. String变量的两种创建方式

    在java中,有两种创建String类型变量的方式: String str01="abc";//第一种方式 String str02=new String("abc&qu ...

  9. 对比两个String无规律包含连续4个相同字符返回true的方法

    package com.qif.dsa.util; import java.util.ArrayList; import java.util.List; /** * @author * @Title: ...

随机推荐

  1. Dorado日常使用总结

    1.360兼容模式下的控件虚线边框问题: 控件加载是onReady事件中加上:self.focusable=false;(用于指示该种控件是否支持获得控制焦点.) 2.360兼容模式下滚动条 cont ...

  2. Nginx & Reverse Proxy

    Nginx & Reverse Proxy https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/ https:/ ...

  3. BZOJ3166 [Heoi2013]Alo 【可持久化trie树 + 二分 + ST表】

    题目 Welcome to ALO ( Arithmetic and Logistic Online).这是一个VR MMORPG , 如名字所见,到处充满了数学的谜题. 现在你拥有n颗宝石,每颗宝石 ...

  4. One-Way Streets (oneway)

    One-Way Streets (oneway) 题目描述 Once upon a time there was a country with nn cities and mm bidirection ...

  5. hashcode和equals方法

    转自https://www.cnblogs.com/keyi/p/7119825.html 一.equals方法的作用 1.默认情况(没有覆盖equals方法)下equals方法都是调用Object类 ...

  6. H5 基本标签使用 浅析 (含video标签、input表单等)

    1. 音频标签<audio> <audio src = “./music/Alone.mp3” controls autoplay loop = “3” ></audio ...

  7. POJ3170 Bzoj1671 [Usaco2005 Dec]Knights of Ni 骑士

    1671: [Usaco2005 Dec]Knights of Ni 骑士 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 281  Solved: 180 ...

  8. CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅

    首页   登录注册         CSS 黑魔法小技巧,让你少写不必要的JS,代码更优雅 阅读 8113 收藏 927 2017-09-26 原文链接:github.com 腾讯云容器服务CSS,立 ...

  9. php --图片加图片水印

    最近在做一个视频网站需要视频有一个封面图片,但是不能是普通的图片,能让别人一眼看出来是 视频,所以我就在图片上面加了视频播放器的那种水印,具体代码如下: <?php/** * 图片加水印(适用于 ...

  10. Android 中利用ViewFlipper 滑动屏幕切换页面,ListView展示数据

    首先新建一个Android项目,命名为ViewFlipperTest 如图:项目机构,本项目主要操作图中红色箭头标注的文件 1.HgroupAdapter.java文件代码↓主要实现listview数 ...