zoukankan      html  css  js  c++  java
  • [leetcode] 438. Find All Anagrams in a String

    Given a string s and a non-empty string p, find all the start indices of p's anagrams in s.

    Strings consists of lowercase English letters only and the length of both strings s and p will not be larger than 20,100.

    The order of output does not matter.

    Example 1:

    Input: s: "cbaebabacd" p: "abc"

    Output: [0, 6]

    Explanation:
    The substring with start index = 0 is "cba", which is an anagram of "abc".
    The substring with start index = 6 is "bac", which is an anagram of "abc".

    Example 2:

    Input:s: "abab" p: "ab"

    Output: [0, 1, 2]

    Explanation:
    The substring with start index = 0 is "ab", which is an anagram of "ab".
    The substring with start index = 1 is "ba", which is an anagram of "ab".
    The substring with start index = 2 is "ab", which is an anagram of "ab".

    这道题跟前面的那道非常相似,同样是采用计数排数的形式进行解题

    class Solution {
    public:
        vector<int> findAnagrams(string s, string p) {
            vector<int>ret;
            int lens = s.length(), lenp = p.length();
            if(lens < lenp) return ret;
            int cnt[26] = {0};
    
            auto check = [&] {
                for(int i = 0; i < 26; ++i)
                    if(cnt[i]) return false;
                return true;
            };
    
            for(int i = 0; i < lenp; ++i) {
                cnt[s[i] - 'a'] += 1;
                cnt[p[i] - 'a'] -= 1;
            }
    
            if(check()) ret.push_back(0);
    
            for(int i = 1; i + lenp <= lens; ++i) {
                cnt[s[i - 1] - 'a'] -= 1;
                cnt[s[i + lenp - 1] - 'a'] += 1;
                if(check()) ret.push_back(i);
            }
    
            return ret;
        }
    };
    
  • 相关阅读:
    2020年寒假假期总结0210
    2020年寒假假期总结0209
    2020年寒假假期总结0208
    2020年寒假假期总结0207
    2020年寒假假期总结0206
    yolo-v4:Optimal Speed and Accuracy of Object Detection解析
    Docker 练习
    tensorflow2.0 GPU版本镜像文件
    flink项目实战
    高等数理统计知识点
  • 原文地址:https://www.cnblogs.com/crackpotisback/p/7468814.html
Copyright © 2011-2022 走看看