Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # https://www.hackerrank.com/challenges/sherlock-and-anagrams/problem?h_l=interview&playlist_slugs%5B%5D=interview-preparation-kit&playlist_slugs%5B%5D=dictionaries-hashmaps
- import os
- import sys
- if __name__ == '__main__':
- entries = int(input())
- inputs = []
- for _ in range(entries):
- inputs.append(input().strip())
- for my_string in inputs:
- sub_strs={}
- #build full substring in hash map: 'abba' => {'a': 2, 'ab': 2, 'abb': 2, 'aabb': 1, 'b': 2, 'bb': 1}
- for x in range(len(my_string)):
- for y in range(x,len(my_string)):
- str_l=list(my_string[x:y+1])
- str_l.sort()
- str="".join(str_l)
- sub_strs[str]=sub_strs.get(str,0)+1
- #iterate through the hash map and count the anagrams one by one: C^2 => n*(n-1)/2
- cnt=0
- for n in sub_strs.values():
- cnt += n*(n-1)//2
- print(cnt)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement