Keira
Published on

leetCode 1347. Minimum Number of Steps to Make Two Strings Anagram

Authors
  • avatar
    Name
    Keira M J
    Twitter

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)
}