1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
// @Title: 使两字符串互为字母异位词的最少步骤数 (Minimum Number of Steps to Make Two Strings Anagram II)
// @Author: 15816537946@163.com
// @Date: 2022-02-27 10:46:27
// @Runtime: 176 ms
// @Memory: 7.1 MB
func minSteps(s string, t string) int {
	sm := make(map[byte]int)
	tm := make(map[byte]int)
	var cnt int

	for i := range s {
		sm[s[i]]++
	}
	for j := range t {
		tm[t[j]]++
	}
	// fmt.Println(sm)
	// fmt.Println(tm)

	for k, v1 := range sm {
		if v2, ok := tm[k]; ok {
			// fmt.Println(k, v1, v2)
			cnt += min(v2, v1)
		}
	}
	// fmt.Println(cnt)

	return len(s) + len(t) - 2*cnt

}

func min(a, b int) int {
	if a > b {
		return b
	}
	return a
}