Skip to content

Commit

Permalink
Solutions to Dictionaries and Hashmaps section
Browse files Browse the repository at this point in the history
  • Loading branch information
sknsht committed Oct 30, 2018
1 parent d0e1d35 commit 51d339d
Showing 1 changed file with 51 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import java.io.*;
import java.util.*;

public class Solution {

// Complete the sherlockAndAnagrams function below.
static int sherlockAndAnagrams(String s) {
HashMap<String, Integer> map = new HashMap<>();

int totalCount = 0;

for (int i = 0; i < s.length(); i++) {
for (int j = i + 1; j <= s.length(); j++) {
String currentSubString = s.substring(i, j);

char[] chars = currentSubString.toCharArray();
Arrays.sort(chars);
currentSubString = String.valueOf(chars);

int value = map.getOrDefault(currentSubString, 0);
if (value > 0) {
totalCount += value;
}
map.put(currentSubString, ++value);
}
}
return totalCount;
}

private static final Scanner scanner = new Scanner(System.in);

public static void main(String[] args) throws IOException {
BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter(System.getenv("OUTPUT_PATH")));

int q = scanner.nextInt();
scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?");

for (int qItr = 0; qItr < q; qItr++) {
String s = scanner.nextLine();

int result = sherlockAndAnagrams(s);

bufferedWriter.write(String.valueOf(result));
bufferedWriter.newLine();
}

bufferedWriter.close();

scanner.close();
}
}

0 comments on commit 51d339d

Please sign in to comment.