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 ...
随机推荐
- 查询集 QuerySet和管理器Manager
查询集 QuerySet 查询集,也称查询结果集.QuerySet,表示从数据库中获取的对象集合. 当调用如下过滤器方法时,Django会返回查询集(而不是简单的列表): all():返回所有数据. ...
- Vue之简易的留言板功能
今天我将带大家通过Vue的todolist案例来完成一个简易的网页留言板! LES'T GO! 首先我们需要在页面上搭建一个input文本输入框,并设置提交按钮,通过循环指令来完成输入框的信息提交! ...
- 线程之sleep(),wait(),yield(),join()等等的方法的区别
操作线程的常用方法大体上有sleep(),join(),yield()(让位),wait(),notify(),notifyAll(),关键字synchronized等等. 由于这些方法功能有些 ...
- 问题 B: 分组统计
分组统计 问题 B: 分组统计时间限制: 1 Sec 内存限制: 32 MB 提交: 416 解决: 107 [提交][状态][讨论版][命题人:外部导入] 题目描述 先输入一组数,然后输入其分组,按 ...
- Linux命令之---which简单介绍
命令简介 which命令的作用是,在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果.也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的 ...
- laravel5.2总结--blade模板
## 1.基本用法 ``` ##情形1 $name = laravel5 <div class="title"> {{$name}} {{$name}}</div ...
- Cygwin访问盘符、使用别名、彩色显示、使用adb命令
Cygwin是一个在Windows平台上运行的类UNIX模拟环境.安装过程我就不重复造轮子了,百度一下即可.其中安装的时候需要装哪些包,要看你用到哪些.比如我就是只用adb shell,所以全部默认安 ...
- 非常全面的vim配置文件
1.mac下vim全局配置目录 /usr/share/vim/vimrc 一般不对此文件做修改,在用户目录下创建自定义配置,目录为: /Users/xxxxx cd ~ 2自定义vim配置 配置功能: ...
- 根据窗口尺寸onresize判断窗口的大小
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...
- 编译php 转
LAOGAO added 20140907: configure: error: mcrypt.h not found. Please reinstall libmcrypt.复制代码 代码如下:wg ...