zoukankan      html  css  js  c++  java
  • LeetCode-Substring with Concatenation of All Words

    题目:

    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;
    }
  • 相关阅读:
    springboot雷神更新
    JVM整理文档
    这是我见过BIO/NIO/AIO讲的最清楚的博客了
    redis主从机制
    mybatis是如何防止sql注入的
    分布式锁的实现方式简介
    Nginx简介
    .net 下的集合
    C#模拟百度登录
    WPF 将PPT,Word转成图片
  • 原文地址:https://www.cnblogs.com/sixue/p/4041775.html
Copyright © 2011-2022 走看看