Skip to main content

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 * 104
  • s.length == t.length
  • s and t consist 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

};