zoukankan      html  css  js  c++  java
  • 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".


    如果s的子串包含p串(不限顺序),则输出子串的起始索引

    C++(43ms):
     1 class Solution {
     2 public:
     3     vector<int> findAnagrams(string s, string p) {
     4         vector<int> res ;
     5         vector<int> hash(256) ;
     6         for(auto c : p){
     7             hash[c]++ ;
     8         }
     9         int left = 0 ;
    10         int right = 0 ;
    11         int count = p.size() ;
    12         while(right < s.size()){
    13             if (hash[s[right++]]-- >= 1){
    14                 count-- ;
    15             }
    16             if (count == 0){
    17                 res.push_back(left) ;
    18             }
    19             if (right - left == p.size() && ++hash[s[left++]] >= 1){
    20                 count++ ;
    21             }
    22         }
    23         return res ;
    24     }
    25 };
     
  • 相关阅读:
    嵌入式驱动视频2019.03.24
    wps如何输入连续的长破折号
    python绘图问题
    2.13
    2.12
    2.10
    2.9
    2.8
    2.7
    2.5
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/8543428.html
Copyright © 2011-2022 走看看