【30】Substring with Concatenation of All Words
来源:互联网 发布:最优化方法孙文瑜辅导 编辑:程序博客网 时间:2024/05/19 03:24
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).
用一个map记录words中每个词出现的次数,然后遍历s,判断从s的每一个位置能否构成words的一个组合。判断的时候用另一个map记录s中每个词出现的次数,如果某个词出现的次数大于在words中出现的次数或某个词不在words中,则此位置不能构成words的一个组合,结束本次循环并进入下一个位置的判断
vector<int> findSubstring(string s, vector<string>& words) { map< string , int > allwords; map< string , int > wcount; vector<int> res; int len=s.length(); int n=words.size(); if(n==0)return res; int wl=words[0].length(); for(int i=0;i<n;i++){ if(allwords.find(words[i])==allwords.end()){ allwords.insert(pair<string,int>(words[i],1)); } else allwords[words[i]]=allwords[words[i]]+1; } for(int i=0;i<=len-wl*n;i++){ int wnum=0; wcount.clear(); for(int j=0;j<n;j++){ string cs=s.substr(i+j*wl,wl); if(allwords.find(cs)!=allwords.end()){ if(wcount.find(cs)!=wcount.end()){ wcount[cs]=wcount[cs]+1; if(wcount[cs]>allwords[cs])break; wnum++; } else{ wcount.insert(pair<string,int>(cs,1)); wnum++; } if(wnum==n)res.push_back(i); } else break; } } return res;}
0 0
- 30 Substring with Concatenation of All Words
- 30Substring with Concatenation of All Words
- 30Substring with Concatenation of All Words
- 【30】Substring with Concatenation of All Words
- LeetCode: Substring with Concatenation of All Words
- LeetCode : Substring with Concatenation of All Words
- LeetCode29: Substring with Concatenation of All Words
- [Leetcode] Substring with Concatenation of All Words
- Substring with Concatenation of All Words
- Substring with Concatenation of All Words
- [LeetCode]Substring with Concatenation of All Words
- Substring with Concatenation of All Words
- LeetCode-Substring with Concatenation of All Words
- [LeetCode] Substring with Concatenation of All Words
- 26 - Substring with Concatenation of All Words
- LeetCode:Substring with Concatenation of All Words
- Leetcode: Substring with Concatenation of All Words
- [LeetCode] Substring with Concatenation of All Words
- CSS Hack
- 安装IIS6,不能复制文件的解决办法
- 心得之gets
- 题目
- Merit价值和成果管理系统——1侧栏与iframe
- 【30】Substring with Concatenation of All Words
- 解题报告:Codeforces Round #226 (Div. 2)E. Bear in the Field 矩阵加速幂
- Android中Socket使用
- 对Log日志的简易封装
- C++11标准之右值引用(ravalue reference)
- div span 区别
- 过滤器
- 机器学习——基本概念
- 计划工作是管理的首要职能