1347. Minimum Number of Steps to Make Two Strings Anagram
Description
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: 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.
Constraints:
1 <= s.length <= 5 * 104
s.length == t.length
s
andt
consist of lowercase English letters only.
Solutions
Solution 1: Counting
We can use a hash table or an array \(\textit{cnt}\) to count the occurrences of each character in the string \(\textit{s}\). Then, we traverse the string \(\textit{t}\). For each character, we decrement its count in \(\textit{cnt}\). If the decremented value is less than \(0\), it means that this character appears more times in the string \(\textit{t}\) than in the string \(\textit{s}\). In this case, we need to replace this character and increment the answer by one.
After the traversal, we return the answer.
The time complexity is \(O(m + n)\), and the space complexity is \(O(|\Sigma|)\), where \(m\) and \(n\) are the lengths of the strings \(\textit{s}\) and \(\textit{t}\), respectively, and \(|\Sigma|\) is the size of the character set. In this problem, the character set consists of lowercase letters, so \(|\Sigma| = 26\).
1 2 3 4 5 6 7 8 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|