Leetcode 438. Find All Anagrams in s 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 = cbaebabacd

p = abc

w = [cb]

w+a = [cba],如果counter之后等于counter(p), 输出头index。在remove 第一个字母c的时候,注意这是counter c的value是不是1。如果是1的话,直接remove。不是1的话,减1。

 1 from collections import Counter
 2
 3 class Solution(object):
 4     def findAnagrams(self, s, p):
 5         """
 6         :type s: str
 7         :type p: str
 8         :rtype: List[int]
 9         """
10         size = len(p)
11         n    = len(s)
12         pCounter = Counter(p)
13         sCounter = Counter(s[:size-1])
14
15         ans = []
16
17         for i in range(size-1,n):
18             sCounter[s[i]] += 1
19             if sCounter == pCounter:
20                 ans.append(i-size+1)
21             if sCounter[s[i-size+1]] == 1:
22                 del sCounter[s[i-size+1]]
23             else:
24                 sCounter[s[i-size+1]] -= 1
25         return ans
时间: 2024-10-06 00:12:28

Leetcode 438. Find All Anagrams in s String的相关文章

Leetcode——438. Find All Anagrams in a String【java】

第一反应感觉是排列组合及字符匹配问题 [既不是可重复排列,有可能不是全排列] 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,10

[leetcode]438. Find All Anagrams in a String找出所有变位词

如题 思路: 代码: 1 class Solution { 2 public List<Integer> findAnagrams(String s, String p) { 3 //corner case 4 List<Integer> res = new ArrayList<>(); 5 if (s == null || s.length() == 0 || p == null || p.length() == 0) return res; 6 // initial

438. Find All Anagrams in a String

Problem statement 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 outpu

letecode [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.

[LC] 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.

【easy】438.Find All Anagrams in a String 找出字符串中所有的变位词

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&

[leetcode] Valid Anagram 、 Find All Anagrams in a String

Valid Anagram Given two strings s and t , write a function to determine if t is an anagram of s. Example 1: Input: s = "anagram", t = "nagaram" Output: true Example 2: Input: s = "rat", t = "car" Output: false Note:

Leetcode 151题 Reverse Words in a String

时间:2014.05.10 地点:基地 心情:准备刷下Leetcode题了,就从第151题开始吧 ------------------------------------------------------------------------------------------ 一.题目 Reverse Words in a String Given an input string, reverse the string word by word. For example, Given s =

leetcode -day27 Recover Binary Search Tree &amp; Interleaving String

1.  Recover Binary Search Tree Two elements of a binary search tree (BST) are swapped by mistake. Recover the tree without changing its structure. Note: A solution using O(n) space is pretty straight forward. Could you devise a constant space solut