LeetCode OJ-- Interleaving String **@
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 **@的更多相关文章
- 【leetcode】Interleaving String
		Interleaving String Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. Fo ... 
- [LeetCode] 97. Interleaving String 交织相错的字符串
		Given s1, s2, s3, find whether s3 is formed by the interleaving of s1and s2. Example 1: Input: s1 = ... 
- [Leetcode][JAVA] Interleaving String
		Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ... 
- 【leetcode】 Interleaving String  (hard)
		Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given:s1 = ... 
- 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 = ... 
- [leetcode]97. Interleaving String能否构成交错字符串
		Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. Input: s1 = "aabc ... 
- 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 ... 
- Leetcode#97 Interleaving String
		原题地址 转化为二维地图游走问题. 比如s1="abab",s2="aab",s3="aabaabb",则有如下地图,其中"^&q ... 
- 【LeetCode OJ】Interleaving String
		Problem Link: http://oj.leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 ... 
- [LeetCode] Interleaving String - 交织的字符串
		题目如下:https://oj.leetcode.com/problems/interleaving-string/ Given s1, s2, s3, find whether s3 is form ... 
随机推荐
- String java问题随笔
			1.字符串加密 设计思想: 每个字符都能够转化为整数型,也能将整数型转化为字符类型,这样我们在加密时候由于向后推3个,所以可以将字符转换为整形,然后加3,之后在将运算完的变量转化为字符后输出,就可以实 ... 
- pandas知识点(数据结构)
			1.Series 生成一维数组,左边索引,右边值: In [3]: obj = Series([1,2,3,4,5]) In [4]: obj Out[4]: 0 1 1 2 2 3 3 4 4 5 ... 
- SoapUI(一)之webservice测试
			webservice测试需要具备的条件: 1.了解业务需求:如从客户端发送一个post请求给服务器,服务器将响应传给客户端. 2.需要一个明确的wsdl地址: 如天气预报的接口链接:http://ww ... 
- Linux命令之---diff
			命令介绍 diff命令可以酌行比较纯文本文件内的内容,并输出文件的差异. 命令格式 diff [option] [file1] [file2] 举例子 1)比较俩文本文件 [root@king ~]# ... 
- 将SpringBoot默认Json解析框架jackson替换成fastjson
			步骤一:引入依赖<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson< ... 
- 【Gitlab+Jenkins+Ansible】构建自动化部署
			说明: Gitlab.Jenkins.生产服务器.测试服务器上都需要安装Git. 一.安装Gitlab 1.主机配置 IP: 10.10.10.105 OS: CentOs7. Gitlab版本:gi ... 
- 分享一个文件查找、替换制定的字符或数字之CS程序、附带源码
			首先就上操作流程图: 图--登陆界面.登陆密码:alidoing.com 图--界面说明(一看就懂) 图--文件查找到再替换 图--文件替换成功 图--替换后的文件 代码开始: 登陆的代码就非常简单. ... 
- leetcode 【 Unique Paths  】python 实现
			题目: A robot is located at the top-left corner of a m x n grid (marked 'Start' in the diagram below). ... 
- jmter+ANT+jekins之配置文件简单优化(build.xml)
			<?xml version="1.0" encoding="utf-8"?> <project name="ant-jmeter-t ... 
- CentOS6.5 安装中文输入法
			直接转载他人文章:http://hi.baidu.com/dxqt58592/item/a85b96e72c423cc0baf37d3c centos 6.5使用yum安装中文输入法 1.需要root ... 
