30. Substring with Concatenation of All Words
2016-03-24 10:34
513 查看
vector<int> findSubstring(string s, vector<string>& words) { if (words.empty()) return vector<int>(); vector<int> ret; //记录所给words中每个单词的出现次数 map<string, int> 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<string, int> 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; }
相关文章推荐
- 集合,数组相互转换,以及相关操作
- VS2012程序打包部署详解
- 基于jenkins动态化参数化构建
- Python append 和 .join
- 【jdk1.8】Integer源码分析
- 动画—Core Animation初步学习二: 基础动画
- 安装完ActivePython后Python的Idle窗口打不开也卸载不掉的解决方法
- 生成bundle和移除bundle
- HDU1561 The more, The Better(树形dp)
- iOS常用宏定义
- oc-29-可变数组
- js、javascript正则表达式验证身份证号码
- Android ANR异常及解决方法
- HustOj使用脚本开启判题功能
- 【bzoj2179】FFT快速傅立叶 FFT
- 基于jenkins+gitlab+redmine构建持续集成环境(一)
- 杭电2074—叠筐
- Spring分层矛盾问题
- ios 遍历方式
- 在Mac上配置/使用Github