HackerRank Strings: Making Anagrams problem solution YASH PAL, 31 July 2024 HackerRank Strings: Making Anagrams Interview preparation kit problem you have Given two strings, a and b, that may or may not be of the same length, determine the minimum number of character deletions required to make a and b anagrams. Any characters can be deleted from either of the strings. Problem solution in Python programming. import math def number_needed(a, b): aString = [0]*26 for ch in a: aString[ord(ch)-97] += 1 bString = [0]*26 for ch in b: bString[ord(ch)-97] += 1 deletions = 0 for i in range(len(aString)): deletions += math.fabs(aString[i]-bString[i]) return int(deletions) a = input().strip() b = input().strip() print(number_needed(a, b)) Problem solution in Java Programming. import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { public static int numberNeeded(String first, String second) { Map<Character, Integer> map = new HashMap<>(); int count = 0; for(int i=0;i<first.length();i++){ if(map.get(first.charAt(i)) == null){ map.put(first.charAt(i), 1); } else { int cur = map.get(first.charAt(i)); map.put(first.charAt(i), cur+1); } } for(int i=0;i<second.length();i++){ if(map.containsKey(second.charAt(i))){ int cur = map.get(second.charAt(i)); if(cur == 1){ map.remove(second.charAt(i)); } else { map.put(second.charAt(i), cur-1); } } else { count++; } } for(Integer i: map.values()){ count=count+i; } return count; } public static void main(String[] args) { Scanner in = new Scanner(System.in); String a = in.next(); String b = in.next(); System.out.println(numberNeeded(a, b)); } } Problem solution in C++ programming. #include <map> #include <set> #include <list> #include <cmath> #include <ctime> #include <deque> #include <queue> #include <stack> #include <string> #include <bitset> #include <cstdio> #include <limits> #include <vector> #include <climits> #include <cstring> #include <cstdlib> #include <fstream> #include <numeric> #include <sstream> #include <iostream> #include <algorithm> #include <unordered_map> using namespace std; int number_needed(string a, string b) { int i,c[26]={0},c1[26]={}; for(i=0;i<a.length();i++) { if(97<=a[i]&&a[i]<=123) c[a[i]-97]++; } for(i=0;i<b.length();i++) { if(97<=b[i]&&b[i]<=123) c1[b[i]-97]++; } int s=0; for(i=0;i<26;i++) { s=s+abs(c[i]-c1[i]); } return (s); } int main(){ string a; cin >> a; string b; cin >> b; cout << number_needed(a, b) << endl; return 0; } Problem solution in C programming. #include <stdio.h> #include <stdint.h> #include <string.h> #include <math.h> int main() { #ifdef _DEBUG char FNAME[250]; strcpy(FNAME, __FILE__); strcpy(strchr(FNAME, '.'), ".txt"); freopen(FNAME, "rt", stdin); #endif char a[10001], b[10001]; scanf("%s %s", a, b); char abc['z' + 1]; memset(abc, 0, sizeof abc); for (char *ptr = a; *ptr != ' '; ++ptr) abc[*ptr]++; for (char *ptr = b; *ptr != ' '; ++ptr) abc[*ptr]--; int changes = 0; for (int c = 'a'; c <= 'z'; ++c) changes += abs(abc[c]); printf("%d", changes); } Problem solution in JavaScript programming. process.stdin.resume(); process.stdin.setEncoding('ascii'); var input_stdin = ""; var input_stdin_array = ""; var input_currentline = 0; process.stdin.on('data', function (data) { input_stdin += data; }); process.stdin.on('end', function () { input_stdin_array = input_stdin.split("n"); main(); }); function readLine() { return input_stdin_array[input_currentline++]; } /////////////// ignore above this line //////////////////// function main() { var a = readLine(); var b = readLine(); var aCount = getCharCount(a); var bCount = getCharCount(b); var deleteCount = 0; for(var i = 0; i < aCount.length; i++) { var min = Math.min(aCount[i], bCount[i]); var max = Math.max(aCount[i], bCount[i]); deleteCount += (max - min) } console.log(deleteCount); } function getCharCount(str) { var count = new Array(26); count.fill(0); for(var i = 0; i < str.length; i++) { var index = str[i].charCodeAt(0) - 97; count[index] = count[index] + 1; } return count; } coding problems interview prepration kit