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.

方法一: DFS,大数据超时

class Solution {
public:
bool dfs(int i1, int i2, int i3, string &s1, string &s2, string &s3)
{ if(i1 == size1 && i2 == size2 ) return true; if(i1 == size1){
if(s2[i2] == s3[i3])
return dfs(i1,i2+, i3+, s1, s2, s3);
else
return false; }else if(i2 == size2){
if(s1[i1] == s3[i3])
return dfs(i1+, i2, i3+, s1, s2, s3);
else
return false ; }else{
bool f1, f2;
if(s1[i1] == s3[i3])
{ f1 = dfs(i1+, i2, i3+, s1, s2, s3);
if(f1 == true) return true ;
}
if(s2[i2] == s3[i3])
{
f2 = dfs(i1,i2+, i3+, s1, s2, s3); return f2;
}
return false; } }
bool isInterleave(string s1, string s2, string s3) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
size1 = s1.size();
size2 = s2.size();
size3 = s3.size();
if(size1 + size2 != size3 ) return false; return dfs(,,, s1, s2, s3) ; }
private:
int size1;
int size2;
int size3;
};

方法二: 2D 动态规划

Use match[i][j] to save if s1[i] or s2[j] are matched s3[i+j].

match[i][j] =   (s3[i+j]==s1[i]  && match[i-1][j])
                    || (s3[i+j] ==s2[j] && match[i][j-1])

class Solution {
public: bool isInterleave(string s1, string s2, string s3) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
size1 = s1.size();
size2 = s2.size();
size3 = s3.size();
if(size1 + size2 != size3 ) return false; vector<vector<bool>> match( size1+, vector<bool>(size2+)) ; match[][] = true; for(int i = ; i <= size1 ; i++)
{
if(s1[i-] == s3[i-])
match[i][] = true;
else
break;
} for(int j = ; j <= size2 ; j++)
{
if(s2[j-] == s3[j-])
match[][j] = true;
else
break;
} int i,j;
for(i = ; i <= size1 ; i++)
for(j = ; j <= size2; j++)
{
match[i][j] =( match[i-][j]&&s1[i-] == s3[i+j-]) ||
(match[i][j-] && s2[j-] == s3[i+j-]) ;
} return match[size1][size2] ; }
private:
int size1;
int size2;
int size3;
};

LeetCode_Interleaving String的更多相关文章

  1. 透过WinDBG的视角看String

    摘要 : 最近在博客园里面看到有人在讨论 C# String的一些特性. 大部分情况下是从CODING的角度来讨论String. 本人觉得非常好奇, 在运行时态, String是如何与这些特性联系上的 ...

  2. JavaScript String对象

    本编主要介绍String 字符串对象. 目录 1. 介绍:阐述 String 对象的说明以及定义方式. 2. 实例属性:介绍 String 对象的实例属性: length. 3. 实例方法:介绍 St ...

  3. ElasticSearch 5学习(9)——映射和分析(string类型废弃)

    在ElasticSearch中,存入文档的内容类似于传统数据每个字段一样,都会有一个指定的属性,为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成字符串值,Elasticsearc ...

  4. [C#] string 与 String,大 S 与小 S 之间没有什么不可言说的秘密

    string 与 String,大 S 与小 S 之间没有什么不可言说的秘密 目录 小写 string 与大写 String 声明与初始化 string string 的不可变性 正则 string ...

  5. js报错: Uncaught RangeError: Invalid string length

    在ajax请求后得到的json数据,遍历的时候chrome控制台报这个错误:Uncaught RangeError: Invalid string length,在stackoverflow查找答案时 ...

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

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

  7. 【手记】注意BinaryWriter写string的小坑——会在string前加上长度前缀length-prefixed

    之前以为BinaryWriter写string会严格按构造时指定的编码(不指定则是无BOM的UTF8)写入string的二进制,如下面的代码: //将字符串"a"写入流,再拿到流的 ...

  8. JavaScript中String对象的方法介绍

    1.字符方法 1.1 charAt() 方法,返回字符串中指定位置的字符. var question = "Do you like JavaScript?"; alert(ques ...

  9. 在多线程编程中lock(string){...}隐藏的机关

    常见误用场景:在订单支付环节中,为了防止用户不小心多次点击支付按钮而导致的订单重复支付问题,我们用 lock(订单号) 来保证对该订单的操作同时只允许一个线程执行. 这样的想法很好,至少比 lock( ...

随机推荐

  1. 头文件intrins.h

    intrins.h 在C51单片机编程中,头文件INTRINS.H的函数使用起来,就会让你像在用汇编时一样简便. 内部函数 描述 _crol_ 字符循环左移   _cror_ 字符循环右移   _ir ...

  2. Keil C动态内存管理机制分析及改进

    Keil C是常用的嵌入式系统编程工具,它通过init_mempool.mallloe.free等函数,提供了动态存储管理等功能.本文通过对init_mempool.mallloe和free这3个Ke ...

  3. Android 有缓存功能的请求封装接口

    /* * @Company 浙 江 鸿 程 计 算 机 系 统 有 限 公 司 * @URL http://www.zjhcsoft.com * @Address 杭州滨江区伟业路1号 * @Emai ...

  4. 解决Struts2.2.20版本的标签不支持style属性的问题

    我先把Exception错误信息贴出来:org.apache.jasper.JasperException: /WEB-INF/jsp/topicAction/addUI.jsp (line: 40, ...

  5. Shortest Word Distance 解答

    Question Given a list of words and two words word1 and word2, return the shortest distance between t ...

  6. Majority Element 解答

    Solution 1 Naive way First, sort the array using Arrays.sort in Java. Than, scan once to find the ma ...

  7. springmvc-时间类型转换器

    springmvc 没有默认实现时间类型的转化,需要如下代码实现此功能. @InitBinder public void initBinder(HttpServletRequest request,S ...

  8. Apache POI组件操作Excel,制作报表(二)

    本文接上一篇继续探究POI组件的使用.     现在来看看Excel的基本设置问题,以2007为例,先从工作簿来说,设置列宽,因为生成表格列应该固定,而行是遍历生成的,所以可以在工作簿级别来设置列宽, ...

  9. python之路-随笔 python处理excel文件

    小罗问我怎么从excel中读取数据,然后我百了一番,做下记录 以下代码来源于:http://www.cnblogs.com/lhj588/archive/2012/01/06/2314181.html ...

  10. JConsole 连接配置

    远程监控配置 JDK配置 在%JAVA_HOME%/jre/lib/management目录下,jmxremote.password.template.jmxremote.password需要修改配置 ...