zoukankan      html  css  js  c++  java
  • [Leetcode]Substring with Concatenation of All Words

    No. 30, Substring with Concatenation of All Words

    这个题其实一开始我都没明白什么意思。。。读了好几遍,发现是在s中找一个子串,这个子串里面包含words中的全部词,而且次数都跟words中一样,同时这个子串中不能含有其他多余的字符,输出符合要求的子串们的begin index。words中的词长度完全一样。

    这道题目我采用了两个map,一个记录words中每个单词及它们出现的次数,另一个记录当前判断的子串中每个单词及它们出现的次数。Index从0开始遍历,一直到s.size()-wordNum*wordLen,因为后面的长度不足够产生这样的子串。将当前判断的子串按照words中单词的长度进行划分,如果出现了不在words中的单词或者当前某单词数量多于words中的数量,说明该Index不可能引导这样一个子串。

    class Solution {
    public:
        vector<int> findSubstring(string s, vector<string>& words) {
            map<string,int> words_;
            map<string,int> cur;
            int wordNum=words.size();
            int wordLen=words[0].size();
            vector<int> result;
            for(int i=0;i<wordNum;i++){
                words_[words[i]]++;
            }
            for(int i=0;i<=(int)s.size()-wordNum*wordLen;i++){
                cur.clear();
                int j=0;
                for(;j<wordNum;j++){
                    string word=s.substr(i+j*wordLen,wordLen);
                    if(words_.find(word)==words_.end()){
                        break;
                    }
                    cur[word]++;
                    if(cur[word]>words_[word])
                        break;
                }
                if(j==wordNum)
                    result.push_back(i);
            }
            return result;
        }
    };
  • 相关阅读:
    发送指令
    WIN32得到HWND
    查找摄像头
    WindowImplBase::OnSysCommand-------duilib在最大化和还原间切换
    CImage将图片转为指定像素大小
    聚集索引和非聚集索引(整理)
    数据库SQL优化大总结之 百万级数据库优化方案
    架构师之路(39)---IoC框架
    .NET Reflector反编译的方法
    PowerDesigner之PDM(物理概念模型)
  • 原文地址:https://www.cnblogs.com/lilylee/p/5258664.html
Copyright © 2011-2022 走看看