|
| 1 | +# [Sherlock and Anagrams](https://www.hackerrank.com/challenges/sherlock-and-anagrams) |
| 2 | + |
| 3 | +- Difficulty: `#medium` |
| 4 | +- Category: `#ProblemSolvingMedium` `#DictionariesAndHashmaps` `#Strings` |
| 5 | + |
| 6 | +Two strings are [http://en.wikipedia.org/wiki/Anagram](anagrams) of each other |
| 7 | +if the letters of one string can be rearranged to form the other string. |
| 8 | +Given a string, find the number of pairs of substrings of the string that are |
| 9 | +anagrams of each other. |
| 10 | + |
| 11 | +## Example |
| 12 | + |
| 13 | +`s = mom` |
| 14 | + |
| 15 | +The list of all anagrammatic pairs is `[m, m]`, `[mo, om]` |
| 16 | +at positions `[[0], [2]]`, `[[0, 1], [1, 2]]` respectively. |
| 17 | + |
| 18 | +## Function Description |
| 19 | + |
| 20 | +Complete the function sherlockAndAnagrams in the editor below. |
| 21 | + |
| 22 | +*sherlockAndAnagrams* has the following parameter(s): |
| 23 | + |
| 24 | +- `string s`: a string |
| 25 | + |
| 26 | +## Returns |
| 27 | + |
| 28 | +- `int`: the number of unordered anagrammatic pairs of substrings in **`s`** |
| 29 | + |
| 30 | +## Input Format |
| 31 | + |
| 32 | +The first line contains an integer `q`, the number of queries. |
| 33 | +Each of the next `q` lines contains a string `s` to analyze. |
| 34 | + |
| 35 | +## Constraints |
| 36 | + |
| 37 | +- $ 1 \leq 10 \leq 10 $ |
| 38 | +- $ 2 \leq $ lenght of `s` $ \leq 100 $ |
| 39 | + |
| 40 | +`s` contains only lowercase letters in the range ascii[a-z]. |
| 41 | + |
| 42 | +## Sample Input 0 |
| 43 | + |
| 44 | +```text |
| 45 | +2 |
| 46 | +abba |
| 47 | +abcd |
| 48 | +``` |
| 49 | + |
| 50 | +## Sample Output 0 |
| 51 | + |
| 52 | +```text |
| 53 | +4 |
| 54 | +0 |
| 55 | +``` |
| 56 | + |
| 57 | +## Explanation 0 |
| 58 | + |
| 59 | +The list of all anagrammatic pairs is `[a, a]`, `[ab, ba]`, |
| 60 | +`[b, b]` and `[abb, bba]` at positions `[[0], [3]]`, `[[0, 1]], [[2, 3]]`, |
| 61 | +`[[1], [2]]` and `[[0, 1, 2], [1, 2, 3]]` respectively. |
| 62 | + |
| 63 | +No anagrammatic pairs exist in the second query as no character repeats. |
| 64 | + |
| 65 | +## Sample Input 1 |
| 66 | + |
| 67 | +```text |
| 68 | +2 |
| 69 | +ifailuhkqq |
| 70 | +kkkk |
| 71 | +```` |
| 72 | +
|
| 73 | +## Sample Output 1 |
| 74 | +
|
| 75 | +```text |
| 76 | +3 |
| 77 | +10 |
| 78 | +``` |
| 79 | + |
| 80 | +## Explanation 1 |
| 81 | + |
| 82 | +For the first query, we have anagram pairs `[i, i]`, `[q, q]` |
| 83 | +and `[ifa, fai]` at positions `[[0], [3]]`, `[[8], [9]]` |
| 84 | +and `[[0, 1, 2], [1, 2, 3]]` respectively. |
| 85 | + |
| 86 | +For the second query: |
| 87 | + |
| 88 | +There are `6` anagrams of the form `[k, k]` at positions `[[0, 1]]`, |
| 89 | + `[[0], [2]]`, `[[0], [3]]`, `[[1], [2]]`, `[[1], [3]]` and `[[2], [3]]`. |
| 90 | + |
| 91 | +There are 3 anagrams of the form `[kk, kk]` at positions `[[0, 1], [1, 2]]`, |
| 92 | +`[[0, 1], [2, 3]]` and `[[1, 2], [2, 3]]`. |
| 93 | + |
| 94 | +There is 1 anagram of the form `[kkk, kkk]` at position `[[0, 1, 2], [1, 2, 3]]`. |
| 95 | + |
| 96 | +## Sample Input 2 |
| 97 | + |
| 98 | +```text |
| 99 | +1 |
| 100 | +cdcd |
| 101 | +``` |
| 102 | + |
| 103 | +## Sample Output 2 |
| 104 | + |
| 105 | +```text |
| 106 | +5 |
| 107 | +``` |
| 108 | + |
| 109 | +## Explanation 2 |
| 110 | + |
| 111 | +There are two anagrammatic pairs of length `1`: `[c, c]` and `[d, d]`. |
| 112 | +There are three anagrammatic pairs of length `2`: |
| 113 | +`[cd, dc]`, `[cd, cd]`, `[dc, cd]` at positions |
| 114 | +`[[0, 1] [1, 2]]`, `[[0, 1], [2, 3]]`, `[1, 2], [2, 3]` respectively. |
0 commit comments