- Published on
leetCode 1347. Minimum Number of Steps to Make Two Strings Anagram
- Authors
- Name
- Keira M J
leetCode 1347. Minimum Number of Steps to Make Two Strings Anagram.
Problem
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 and t consist of lowercase English letters only.
Approach
It's my first solution. And it's time limit exceeded.
Time limit exceeded code
var minSteps = function (s, t) {
// const tArr = [...t]
// let results = 0
// const sArr = [...s]
// for(let i=0; i<tArr.length; i++){
// if(sArr.includes(tArr[i])){
// const idx = sArr.indexOf(tArr[i])
// sArr.splice(idx,1)
// }else{
// results++
// }
// }
// return results
}
Solution
An anagram compares two strings to determine the number of matching characters between them, regardless of the order. This process often involves using an array and ASCII values to track character counts.
var minSteps = function (s, t) {
var s_arr = new Array(26).fill(0)
for (let i = 0; i < s.length; i++) {
s_arr[s[i].charCodeAt(0) - 97]++
}
for (let i = 0; i < t.length; i++) {
var charIndex = t[i].charCodeAt(0) - 97
if (s_arr[charIndex] > 0) {
s_arr[charIndex]--
}
}
return s_arr.reduce((a, b) => a + b)
}