Advertisement
wrequiems

Untitled

Apr 27th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.07 KB | None | 0 0
  1. from collections import Counter
  2.  
  3. def remove_from_matrice(matrice, letter):
  4.     if letter in matrice:
  5.         if matrice[letter] == 1:
  6.             matrice.pop(letter)
  7.             return
  8.         matrice[letter] -= 1
  9.         return
  10.     matrice[letter] = -1
  11.  
  12. def add_to_matrice(matrice, letter):
  13.     if letter in matrice:
  14.         if matrice[letter] == -1:
  15.             matrice.pop(letter)
  16.             return
  17.         matrice[letter] += 1
  18.         return
  19.     matrice[letter] = 1
  20.  
  21. def index_of_anagrams(w, s):
  22.     output = []
  23.     matrice = dict(Counter(w))
  24.     word_length = len(w)
  25.     for i in range(word_length):
  26.         matrice.setdefault(s[i], 0)
  27.         remove_from_matrice(matrice, s[i])
  28.     if len(matrice) == 0:
  29.         output.append(0)
  30.     for i in range(word_length, len(s)):
  31.         remove_from_matrice(matrice, s[i])
  32.         add_to_matrice(matrice, s[i - word_length])
  33.         if len(matrice) == 0:
  34.             output.append(i - word_length + 1)
  35.     return output
  36.  
  37. # w, s = 'ab', 'abxaba'
  38. w, s = 'hor', 'abhrorhoxhraohrox'
  39. print(index_of_anagrams(w, s))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement