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 };
  • 相关阅读:
    正则 匹配 HTML 标签
    webpack 打包图片 能否提高加载速度
    禁止手机浏览器左右滑屏 后退 前进
    Objective-C--@property,@synthesize关键字介绍
    ios--绘图介绍
    iOS--为视图添加阴影
    iOS--iOS7摄像头识别二维码功能
    iOS--日历事件的获取和添加
    iOS-#ifdef DEBUG代码块介绍
    如何将你的程序打包成ipa
  • 原文地址:https://www.cnblogs.com/SarahLiu/p/5999348.html
Copyright © 2011-2022 走看看