30. 与所有单词相关联的字串
给定一个字符串 s 和一些长度相同的单词 words。在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置。
注意子串要与 words 中的单词完全匹配,中间不能有其他字符,但不需要考虑 words 中单词串联的顺序。
示例 1:
输入:s = "barfoothefoobarman",words = ["foo","bar"]
输出: [0,9]解释: 从索引 0 和 9 开始的子串分别是 "barfoor" 和 "foobar" 。
输出的顺序不重要, [9,0] 也是有效答案。
示例 2:
输入:s = "wordgoodstudentgoodword",words = ["word","student"]
输出: []
- 这道题我们需要用到两个哈希表,第一个哈希表先把所有的单词存进去,然后从开头开始一个个遍历,停止条件为当剩余字符个数小于单词集里所有字符的长度。
- 这时候我们需要定义第二个哈希表,然后每次找出给定单词长度的子串,看其是否在第一个哈希表里,如果没有,则break,如果有,则加入第二个哈希表,但相同的词只能出现一次,如果多了,也break。如果正好匹配完给定单词集里所有的单词,则把i存入结果中。
class Solution {
public:
vector<int> findSubstring(string s, vector<string>& words) {
vector<int> res;
if (s.empty() || words.empty())
return res;
int n = words.size(), m = words[0].size();
unordered_map<string, int> m1;
for (auto &a : words) ++m1[a];
for (int i = 0; i <= (int)s.size() - n * m; ++i)
{
unordered_map<string, int> m2;
int j = 0;
for (j = 0; j < n; ++j)
{
string t = s.substr(i + j * m, m);
if (m1.find(t) == m1.end())
break;
++m2[t];
if (m2[t] > m1[t]) break;
}
if (j == n)
res.push_back(i);
}
return res;
}
};
30. 与所有单词相关联的字串相关推荐
- LeetCode(30):与所有单词相关联的字串
Hard! 题目描述: 给定一个字符串 s 和一些长度相同的单词 words.在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置. 注意子串要与 words 中的单词完全匹配,中间不能 ...
- leetcode 30. Substring with Concatenation of All Words 与所有单词相关联的字串 滑动窗口法
题目描述 给定一个字符串 s 和一些长度相同的单词 words.在 s 中找出可以恰好串联 words 中所有单词的子串的起始位置. You are given a string, s, and a ...
- 030 Substring with Concatenation of All Words 与所有单词相关联的字串
给定一个字符串 s 和一些长度相同的单词 words,找出 s 与 words 中所有单词(words 每个单词只出现一次)串联一起(words中组成串联串的单词的顺序随意)的字符串匹配的所有起始索引 ...
- 【mybatis】 “if“ 相关联的 “test“ 属性值不能包含 ‘<‘ 字符
前言 mybatis 3.4.6 错误代码 mybatis XML mapper 错误 <select id="selectxxxList" parameterType=&q ...
- 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联。
解决方案:用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接相关联. 解决方案:用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接相关联. 今天进行身份验证时, ...
- CSS将样式规则与HTML元素相关联
CSS通过将规则与HTML元素相关联的方式来工作,这些规则用来控制指定元素的内容如何显示. 一条CSS规则包含两个部分:一个选择器和一条声明. 示例: P{ ------- ----- ...
- DataReader 要在事务提交前 CLOSE 掉 否则会报一个:已有打开的与此命令相关联的 DataReader,必须首先将它关闭。...
DataReader 要在事务提交前 CLOSE 掉 否则会报一个:已有打开的与此命令相关联的 DataReader,必须首先将它关闭. 转载于:https://www.cnblogs.com/run ...
- LeetCode 30串联所有单词的子串31下一个排列
标题 串联所有单词得字串 下一个排列 维护真的不易,如有帮助还请点赞关注,关注公众号bigsai回复进群即可加入打卡. 串联所有单词得字串 题目描述: 给定一个字符串 s 和一些长度相同的单词 wor ...
- 0X8009310B (ASN:276) win7安装证书时出现错误消息:找不到与此证书文件相关联的证书申请微软官方文档
原文:http://support.microsoft.com/kb/959216#top 您尝试通过使用 IIS 7.0 管理器安装证书时出现错误消息:"找不到与此证书文件相关联的证书申请 ...
- 已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭
已有打开的与此 Command 相关联的 DataReader,必须首先将它关闭 引用: http://www.cnblogs.com/maxao/archive/2011/03/18/19881 ...
最新文章
- 干货!神经网络原来是这样和数学挂钩的
- PHP数据库链接类(PDO+Access)
- 【计算机网络】数据链路层 : 局域网基本概念 ( 局域网分类 | 拓扑结构 | 局域网特点 | 局域网传输介质 | 介质访问控制方法 | IEEE 802 | 链路层 LLC、MAC 控制子层 )
- matlab碎纸拼接相似函数,基于蒙特卡洛算法构建能量函数的碎纸图片拼接方法
- 牛客练习赛42 A	字符串
- 解决orcale报ORA-28001: the password has expired
- 数字图像处理之图像几何变换
- LeetCode 134 Gas Station
- 《php100 视频教程》笔记心得 张恩民 php100 (张迅雷闪击php系列)
- jpg转word免费的软件
- java使用openoffice/libreoffice进行office转pdf
- ps-黑白老照片快速上色
- WPS2007去广告
- windows上配置深度学习(李沐-动手学深度学习)
- [leetcode Q50] Pow(x, n)
- 动态规划——最长非降子序列
- 4、Kafka API实战
- 塔尔斯基学派代表作—模型论(教科书)
- 大型网站架构 图片服务器分离
- Witt向量简介 §3.2.3:Witt环除运算封闭性外的其他环条件的验证
热门文章
- ASP.NET 2.0运行原理及其过程简要分析
- rocketmq 同步双写
- jQuery源码分析系列(31) : Ajax deferred实现
- 管理之道(七) - 不可奖励员工错误的行为
- 用struts拦截器实现登录验证功能AuthorizationInterceptor
- 简述物联网感知技术_雄芯一号芯片发布 智慧城市物联网感知体系升级换新
- java中utilities类_Java SwingUtilities类
- 斐波那契数列——O(1)算法
- 温故知新----表格
- 三路划分快速排序 java_程序员面试—快速排序的三路划分