码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode-Substring with Concatenation of All Words

时间:2014-10-22 00:29:15      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:style   blog   color   io   ar   for   sp   div   on   

题目:

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].

源码:

用两个map,其中一个map用来保存L中每个word出现的次数。然后遍历S字符串,通过比较word_counts中的单词出现的次数.若超过或不出现则break.

vector<int> findSubstring(string S,vector<string> &L){
      int size=L.size();
      if(size<=0) return vector<int>();
      
      map<string,int> word_counts;
      for(int i=0;i<size;i++){
          word_counts[L[i]]++;
      }
      
      int word_size=L[0].size();
      map<string,int> counting;
      vector<int> result;
      
      for(int i=0;i<=((int)S.length()-size*word_size);i++){
            counting.clear();
            
            for(int j=0;j<size;j++){
                 string word=S.substr(i+j*word_size,word_size);
                 
                 if(word_counts.find(word)!=word_counts.end()){
                        counting[word]++;
                        
                        if(counting[word]>word_counts[word]) break;
                 }
                 
            }
            
            if(j==size) result,push_back(i);
      }
      return result;
}

 

LeetCode-Substring with Concatenation of All Words

标签:style   blog   color   io   ar   for   sp   div   on   

原文地址:http://www.cnblogs.com/sixue/p/4041775.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!