Minimum Number of Steps to Make Two Strings Anagram
Description
Given two equal-size strings 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: 1 Explanation: Replace the first 'a' in t with b, t = "bba" which is anagram of s.
Example 2:
Input: s = "leetcode", t = "practice" Output: 5 Explanation: 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: 0 Explanation: "anagram" and "mangaar" are anagrams.
Example 4:
Input: s = "xxyyzz", t = "xxyyzz" Output: 0
Example 5:
Input: s = "friend", t = "family" Output: 4
Constraints:
1 <= s.length <= 50000
s.length == t.length
s
andt
contain lower-case English letters only.
Solution(javascript)
/** 这题应该可以用贪心的策略来做, O(s) Space O(s + t) time
* @param {string} s
* @param {string} t
* @return {number}
*/
const minSteps = function (s, t) {
const countMap = {}
for (const c of s) {
countMap[c] = (countMap[c] || 0) + 1
}
let result = 0
for (const c of t) {
if (countMap[c] > 0) {
countMap[c] -= 1
} else {
result += 1
}
}
return result
}