zoukankan      html  css  js  c++  java
  • 【leetcode】Find All Anagrams in a String

    【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".

    Subscribe to see which companies asked this question

    思路:

    运用hash表,用一个hash表h1统计字符串p中的元素,用另一个hash表h2统计字符串s中的元素,设p中的元素个数是m个,则h2只统计连续的m个元素。所以当坐标>=i时,每往后遍历一个元素,先前的元素也要减一个。

    代码如下:

     1 class Solution {
     2 public:
     3     vector<int> findAnagrams(string s, string p) {
     4         vector<int>ans;
     5         int freq[26]={0};
     6         for(char c:p)
     7             freq[c-'a']++;
     8         for(int l=0,r=0,cnt=0;r<s.size();++r)
     9         {
    10             if(r-l==p.length() && ++freq[s[l++]-'a']>0)
    11                 cnt--;
    12             if(freq[s[r]-'a']-->0 && ++cnt==p.length()) 
    13                 ans.push_back(l);
    14         }
    15         return ans;
    16     }
    17 };
  • 相关阅读:
    Jmeter安装与环境部署
    BVT & BAT (版本验证测试和版本验收测试)
    测试计划(Test Plan)
    小米8se从miui12降级刷机手记
    网络传输---HttpURLConnection
    mybatis 中 foreach collection的三种用法
    XStream--java对象与xml形式文件相互转换
    idea问题总结记录
    ssh框架配置过程
    ssm框架配置过程
  • 原文地址:https://www.cnblogs.com/SarahLiu/p/5999348.html
Copyright © 2011-2022 走看看