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

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

题目

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

For example, given:

s: “barfoothefoobarman”
words: [“foo”, “bar”]

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

(order does not matter).

分析

解决该问题的关键是理解清楚要求。

给定一个目标字符串s,一个单词集合words。
要求使得words集合中全部元素连续出如今s中的首位置组成的集合(元素顺序不考虑)。

正如所给实例,目标字符串s: “barfoothefoobarman”

对照单词集合words: [“foo”, “bar”]
我们发现,在pos=0 ~ 5时“barfoo”恰好匹配,则0压入结果vector。
在pos=9 ~ 14时“foobar”恰好匹配。则9压入结果vector。

在理清楚题意后,便可入手程序实现。

AC代码

class Solution {public:    vector
findSubstring(string s, vector
& words) { if (words.empty()) return vector
(); vector
ret; //记录所给words中每一个单词的出现次数 map
word_count; //每一个单词的长度同样 int word_size = strlen(words[0].c_str()); int word_nums = words.size(); //所给匹配字符串的长度 int s_len = strlen(s.c_str()); for (int i = 0; i < word_nums; i++) ++word_count[words[i]]; int i, j; map
temp_count; for (i = 0; i < s_len - word_nums*word_size + 1; ++i) { temp_count.clear(); for (j = 0; j < word_nums; j++) { //检验当前单词是否属于words以及出现的次数是否一致 string word = s.substr(i + j*word_size, word_size); if (word_count.find(word) != word_count.end()) { ++temp_count[word]; //假设出现的次数与words不一致,则返回错误 if (temp_count[word] > word_count[word]) break; }//if else{ break; }//else }//for //全部words内的单词,在i起始位置都出现,则将下标i存入结果的vector中 if (j == word_nums) { ret.push_back(i); }//if }//for return ret; }};

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

你可能感兴趣的文章
记一个搜索网盘资源的网站
查看>>
jdk1.7和jdk1.8的String的getByte方法的差异
查看>>
java父子进程通信
查看>>
Android ADB server didn't ACK * failed to start daemon * 简单有效的解决方案
查看>>
Olap学习笔记
查看>>
Codeforces Round #431 (Div. 1)
查看>>
如何进行数组去重
查看>>
将标题空格替换为 '_' , 并自动复制到剪切板上
查看>>
List Collections sort
查看>>
Mysql -- You can't specify target table 'address' for update in FROM clause
查看>>
使用局部标准差实现图像的局部对比度增强算法。
查看>>
2017-2018-1 20165313 《信息安全系统设计基础》第八周学习总结
查看>>
《代码敲不队》第四次作业:项目需求调研与分析
查看>>
菜鸡互啄队—— 团队合作
查看>>
HttpWebRequest的GetResponse或GetRequestStream偶尔超时 + 总结各种超时死掉的可能和相应的解决办法...
查看>>
SparseArray
查看>>
第二章
查看>>
android背景选择器selector用法汇总
查看>>
[转]Paul Adams:为社交设计
查看>>
showdialog弹出窗口刷新问题
查看>>