Skip to content

Latest commit

 

History

History
134 lines (107 loc) · 3.22 KB

File metadata and controls

134 lines (107 loc) · 3.22 KB

中文文档

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 and t consist of lowercase English letters only.

Solutions

Python3

class Solution:
    def minSteps(self, s: str, t: str) -> int:
        counter = Counter(s)
        res = 0
        for c in t:
            if counter[c] > 0:
                counter[c] -= 1
            else:
                res += 1
        return res

Java

class Solution {
    public int minSteps(String s, String t) {
        int[] counter = new int[26];
        for (char c : s.toCharArray()) {
            ++counter[c - 'a'];
        }
        int res = 0;
        for (char c : t.toCharArray()) {
            if (counter[c - 'a'] > 0) {
                --counter[c - 'a'];
            } else {
                ++res;
            }
        }
        return res;
    }
}

C++

class Solution {
public:
    int minSteps(string s, string t) {
        vector<int> counter(26);
        for (char c : s) ++counter[c - 'a'];
        int res = 0;
        for (char c : t) {
            if (counter[c - 'a'] > 0)
                --counter[c - 'a'];
            else
                ++res;
        }
        return res;
    }
};

Go

func minSteps(s string, t string) int {
	counter := make([]int, 26)
	for _, c := range s {
		counter[c-'a']++
	}
	res := 0
	for _, c := range t {
		if counter[c-'a'] > 0 {
			counter[c-'a']--
		} else {
			res++
		}
	}
	return res
}

...