Minimum Number of Steps to Make Two Strings Anagram
Problem statement
You are given two strings of the same length s and t. In one step you can choose any character of t and replace it with another character.
Return the minimum number of steps to make t an anagram of s.
An Anagram of a string is a string that contains the same characters with a different (or the same) ordering.
Example 1:
Input: s = "bab", t = "aba"Output: 1Explanation: Replace the first 'a' in t with b, t = "bba" which is anagram of s.
Example 2:
Input: s = "leetcode", t = "practice"Output: 5Explanation: Replace 'p', 'r', 'a', 'i' and 'c' from t with proper characters to make t anagram of s.
Example 3:
Input: s = "anagram", t = "mangaar"Output: 0Explanation: "anagram" and "mangaar" are anagrams.
Constraints:
1 <= s.length <= 5 * 104s.length == t.lengthsandtconsist of lowercase English letters only.
My solution
/**
* @param {string} s
* @param {string} t
* @return {number}
*/
var minSteps = function(s, t) {
const mapS = new Map();
const mapT = new Map();
for (const char of s.split("")) {
if (!mapS.has(char)) {
mapS.set(char, 0)
}
mapS.set(char, mapS.get(char) + 1)
}
for (const char of t.split("")) {
if (!mapT.has(char)) {
mapT.set(char, 0)
}
mapT.set(char, mapT.get(char) + 1)
}
let count = 0;
// console.log(mapS, mapT)
for (const char of mapT.keys()) {
count += mapT.get(char) - Math.min(mapT.get(char), (mapS.get(char) || 0))
}
return count
};