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 ...
随机推荐
- mysql密码正确却提示错误, 不输入密码反而能登录
今天部署阿里云服务器, 发现之前可以连接的mysql服务器突然连接不上了, 密码我确认是正确的,但登录时就是显示密码错误, 很崩溃, 差点气得我就想重装mysql了. 好在经过几番苦寻找到了以下能解决 ...
- Linux命令之---mv
命令简介 mv命令是move的缩写,可以用来移动文件或者将文件改名(move (rename) files) 命令格式 mv [选项] 源文件或目录 目标文件或目录 命令参数 -b 若需覆盖文件,则覆 ...
- Java并发——synchronized和ReentrantLock的联系与区别
0 前言 本文通过使用synchronized以及Lock分别完成"生产消费场景",再引出两种锁机制的关系和区别,以及一些关于锁的知识点. 本文原创,转载请注明出处:http:// ...
- service-worker实践
service-worker虽然已列入标准,但是支持的浏览器还是有限制,还有比较多的问题. 1. 生命周期 注册成功-------installing--------------> 安装成功(i ...
- loj2059 「TJOI / HEOI2016」字符串
字符串好难啊不会啊 #include <iostream> #include <cstdio> using namespace std; int n, m, rnk[10000 ...
- Java web学习总结
javaweb学习总结(十四)——JSP原理 孤傲苍狼 2014-07-24 09:38 阅读:46603 评论:37 JavaWeb学习总结(十三)——使用Session防止表单重复提交 孤 ...
- PostgreSQL 如何优化索引效率
使用 gin() 创建全文索引后,虽然有走索引,但是当结果集很大时,查询效率还是很底下, SELECT keyword,avg_mon_search,competition,impressions,c ...
- How Ironic Inspector Works
翻译官网概述. 操作员将节点注册为Ironic,例如 通过openstack baremetal CLI命令. 电源管理认证应该在这一步提供给Ironic. 如节点状态所述,节点被置于正确的自省状态. ...
- mvc-自定义Route
public class CustomerRoute : RouteBase { //从路径中解析出controller.action以及其他参数,创建RouteData(其中包括HttpHandle ...
- PAT1038(两个运行超时 未解决
# include<iostream> # include<algorithm> using namespace std; int jishu(int a[],int N,in ...