import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.regex.*; public class Solution { // Complete the sherlockAndAnagrams function below. static int sherlockAndAnagrams(String s) { ArrayList subStrings = new ArrayList(); for(int i = 1; i <= s.length(); i++){ if(( i%s.length()) == i){ subStrings.addAll(generateSubstring(s,i)); } } int palindroms=0; for (int i = 0; i < subStrings.size(); i++){ for (int j = i+1; j < subStrings.size(); j++){ if (isPalindrom(subStrings.get(i),subStrings.get(j))) palindroms++; } } return palindroms; } static boolean isPalindrom(String a, String b){ if(a.length() != b.length()) return false; char [] ac = a.toCharArray(); char [] bc = b.toCharArray(); Arrays.sort(ac); Arrays.sort(bc); for(int i = 0; i < ac.length; i++){ if(ac[i] != bc[i]) return false; } return true; } static List generateSubstring (String a, int b){ List out = new ArrayList(); for (int i = 0; i < a.length() - b +1; i++){ out.add(a.substring(i,i+b)); } return out; } 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(); } }
Monthly Archives: February 2019
Hash Tables: Ransom Note
import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.regex.*; public class Solution { // Complete the checkMagazine function below. static void checkMagazine(String[] magazine, String[] note) { HashMap magazineMap = new HashMap(); for(int i = 0; i < magazine.length; i++){ if (magazineMap.get(magazine[i]) == null) magazineMap.put(magazine[i],1); else magazineMap.put(magazine[i], magazineMap.get(magazine[i])+1); } for (int i = 0; i < note.length; i++){ if(magazineMap.get(note[i]) == null || magazineMap.get(note[i]) == 0 ) { System.out.println("No"); return; } else magazineMap.put(note[i], magazineMap.get(note[i])-1); } System.out.println("Yes"); } private static final Scanner scanner = new Scanner(System.in); public static void main(String[] args) { String[] mn = scanner.nextLine().split(" "); int m = Integer.parseInt(mn[0]); int n = Integer.parseInt(mn[1]); String[] magazine = new String[m]; String[] magazineItems = scanner.nextLine().split(" "); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); for (int i = 0; i < m; i++) { String magazineItem = magazineItems[i]; magazine[i] = magazineItem; } String[] note = new String[n]; String[] noteItems = scanner.nextLine().split(" "); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); for (int i = 0; i < n; i++) { String noteItem = noteItems[i]; note[i] = noteItem; } checkMagazine(magazine, note); scanner.close(); } }
Minimum Swaps 2
import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.regex.*; public class Solution { // Complete the minimumSwaps function below. static int minimumSwaps(int[] arr) { int swaps = 0; for (int i = 0; i < arr.length; ){ if(arr[i] != (i+1)){ swap(i,arr[i],arr); swaps++; } else i++; } return swaps; } static void swap(int i, int incorrect, int[] arr){ int temp = arr[incorrect-1]; arr[incorrect-1] = incorrect; arr[i] = temp; } 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 n = scanner.nextInt(); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); int[] arr = new int[n]; String[] arrItems = scanner.nextLine().split(" "); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); for (int i = 0; i < n; i++) { int arrItem = Integer.parseInt(arrItems[i]); arr[i] = arrItem; } int res = minimumSwaps(arr); bufferedWriter.write(String.valueOf(res)); bufferedWriter.newLine(); bufferedWriter.close(); scanner.close(); } }
2D Array – DS
import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.regex.*; public class Solution { // Complete the hourglassSum function below. static int hourglassSum(int[][] arr) { int[] dx = {-1,-1,0,0,1,1}; int[] dy = {1,-1,1,-1,1,-1}; int max = Integer.MIN_VALUE; for ( int i = 1; i< arr.length - 1; i++){ for (int j =1; j < arr[i].length - 1; j++){ int current = arr[i][j]; for (int k = 0; k < 6; k++){ current += arr[dy[k] + i][dx[k] + j]; } max = Math.max(max,current); } } return max; } 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[][] arr = new int[6][6]; for (int i = 0; i < 6; i++) { String[] arrRowItems = scanner.nextLine().split(" "); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); for (int j = 0; j < 6; j++) { int arrItem = Integer.parseInt(arrRowItems[j]); arr[i][j] = arrItem; } } int result = hourglassSum(arr); bufferedWriter.write(String.valueOf(result)); bufferedWriter.newLine(); bufferedWriter.close(); scanner.close(); } }
Balanced Brackets
import java.io.*; import java.math.*; import java.security.*; import java.text.*; import java.util.*; import java.util.concurrent.*; import java.util.regex.*; public class Solution { // Complete the isBalanced function below. static String isBalanced(String s) { LinkedList in = new LinkedList(); for (int i = 0; i < s.length(); i++){ if(s.charAt(i) == '{' ||s.charAt(i) == '(' ||s.charAt(i) == '[' ){ in.push(s.charAt(i)); }else if (s.charAt(i) == '}'){ if(!in.isEmpty() && in.peek() == '{') in.pop(); else return "NO"; }else if (!in.isEmpty() && s.charAt(i) == ']'){ if(in.peek() == '[') in.pop(); else return "NO"; }else if (!in.isEmpty() && s.charAt(i) == ')'){ if(in.peek() == '(') in.pop(); else return "NO"; }else return "NO"; } if (in.isEmpty()) return "YES"; else return "NO"; } 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 t = scanner.nextInt(); scanner.skip("(\r\n|[\n\r\u2028\u2029\u0085])?"); for (int tItr = 0; tItr < t; tItr++) { String s = scanner.nextLine(); String result = isBalanced(s); bufferedWriter.write(result); bufferedWriter.newLine(); } bufferedWriter.close(); scanner.close(); } }