new_contents: """Leetcode 438. Find All Anagrams in a String
  Medium
  
  URL: https://leetcode.com/problems/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(object):
      def findAnagrams(self, s, p):
          """
          :type s: str
          :type p: str
          :rtype: List[int]
  
          Time complexity: O(m*n), where m & n is length of s & p.
          Space complexity: O(1).
          """
          pass
  
  
  def main():
      # Output: [0, 6]
      s = "cbaebabacd"
      p = "abc"
      print Solution().findAnagrams(s, p)
  
      # Output: [0, 1, 2]
      s = "abab"
      p = "ab"
      print Solution().findAnagrams(s, p)
  
  
  if __name__ == '__main__':
      main()
  
subject: Add lc0438_find_all_anagrams_in_a_string.py