2024-01-13 Daily Challenge

Today I have done leetcode's January LeetCoding Challenge with cpp.

January LeetCoding Challenge 13

Description

Minimum Number of Steps to Make Two Strings Anagram

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.

Solution

auto speedup = [](){
  cin.tie(nullptr);
  cout.tie(nullptr);
  ios::sync_with_stdio(false);
  return 0;
}();
class Solution {
public:
  int minSteps(string s, string t) {
    vector<int> countS(26);
    vector<int> countT(26);
    for(auto c : s) {
      countS[c - 'a'] += 1;
    }
    for(auto c : t) {
      countT[c - 'a'] += 1;
    }
    int answer = s.length();
    for(int i = 0; i < 26; ++i) {
      answer -= min(countS[i], countT[i]);
    }

    return answer;
  }
};

// Accepted
// 63/63 cases passed (32 ms)
// Your runtime beats 98.38 % of cpp submissions
// Your memory usage beats 19.43 % of cpp submissions (17.2 MB)