leetcode 30 Substring with Concatenation of All Words

Posted GadyPu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode 30 Substring with Concatenation of All Words相关的知识,希望对你有一定的参考价值。

题目连接

https://leetcode.com/problems/substring-with-concatenation-of-all-words/  

Substring with Concatenation of All Words

Description

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 wordsexactly 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).

根据题意直接模拟(写的很挫跑的很慢QAQ)

class Solution {
public:
    vector<int> findSubstring(string s, vector<string>& words) {
        vector<int> res;
        if(s.empty() || words.empty()) return res;
        for(auto &r: words) A[r]++;
        int n = words[0].size(), m = s.size(), k = words.size();
        int len = m - n * k + 1;
        for(int i = 0; i < len; i++) {
            int d = k, j = i;
            B.clear();
            while(d) {
                string temp = s.substr(j, n);
                j += n;
                if(A.find(temp) == A.end()) {
                    break;
                } else {
                    B[temp]++;
                    if(B[temp] > A[temp]) break;
                    d--;
                }
            }
            if(!d) res.push_back(i);
        }
        return res;
    }
private:
    map<string, int> A, B;
};

以上是关于leetcode 30 Substring with Concatenation of All Words的主要内容,如果未能解决你的问题,请参考以下文章

leetcode 30 Substring with Concatenation of All Words

19.1.30 [LeetCode 30] Substring with Concatenation of All Words

LeetCode(30) Substring with Concatenation of All Words

LeetCode30. Substring with Concatenation of All Words

leetcode 30. Substring with Concatenation of All Words

LeetCode HashTable 30 Substring with Concatenation of All Words