博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Substring with Concatenation of All Words
阅读量:6815 次
发布时间:2019-06-26

本文共 1157 字,大约阅读时间需要 3 分钟。

You are given a string, S, and a list of words, L, that are all of the same length. Find all starting indices of substring(s) in S that is a concatenation of each word in L exactly once and without any intervening characters.

For example, given:

S: "barfoothefoobarman"
L: ["foo", "bar"]

You should return the indices: [0,9].

(order does not matter).

假设L中的单位长度为n,依次从S中取长度为n的子串,如果在L中,就记下来。如果在L中,但是已经匹配过了,说明匹配重复,也需要从S的下一个位置开始重新匹配,因为匹配要是连续的,中间不允许插入其他不匹配或者重复匹配的单词。需要借助hash或map,如果整个L都匹配完了,就算是一个concatenation;当匹配错误的时候,S右移一个位置。

 

C++实现代码:

#include
#include
#include
#include
using namespace std;class Solution {public: vector
findSubstring(string S, vector
&L) { vector
ret; int n=L[0].size(); if(S.length()
mp;//记录L中每一个string出现的次数 map
word; //记录在S中找到的L中string的次数,如果大于mp中的,说明找到重复的 size_t i; for(i=0;i
mp[tmp]) { flag=false; break; } } if(flag) ret.push_back(idx); idx++; } return ret; }};int main(){ Solution s; vector
L={ "foo", "bar"}; vector
result=s.findSubstring(string("barfoothefoobarman"),L); for(auto a:result) cout<
<<" "; cout<

 

转载地址:http://iibzl.baihongyu.com/

你可能感兴趣的文章
【cocos2d-js官方文档】四、基础数据类型
查看>>
【IIS错误】IIS各种错误
查看>>
LeetCode题解 | 215. 数组中的第K个最大元素
查看>>
DL4NLP —— 序列标注:BiLSTM-CRF模型做基于字的中文命名实体识别
查看>>
Python图片裁剪实例代码(如头像裁剪)
查看>>
【虚拟机】oracle Virtual Box4.2.6虚拟机正在运行的过程中删除了其上的一个备份,之后虚拟机就无法使用了...
查看>>
数据库MySQL--条件查询/排序查询
查看>>
资源文件加载(Pack URI 方案)
查看>>
步步为营:Asp.Net使用HttpWebRequest通知,抓取,采集
查看>>
求2维数组相邻元素的和的最大值
查看>>
大数据开发实战:离线大数据处理的主要技术--Hive,概念,SQL,Hive数据库
查看>>
VsCode使用之HTML 中 CSS Class 智能提示
查看>>
JMeter基础之一 一个简单的性能测试
查看>>
【转】性能测试工具 性能测试如何做?
查看>>
fullpage.js禁止滚动
查看>>
LoadRunner中响应时间与事物时间详解
查看>>
ZigZag Conversion
查看>>
Android 通过HTTPCLINET POST请求互联网数据
查看>>
Hadoop集群的配置(一)
查看>>
Kafka 学习笔记之 Consumer API
查看>>