242.有效的字母异位词

52 阅读1分钟

题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意: 若 s 和 t **中每个字符出现的次数都相同,则称 s 和 t **互为字母异位词。
解法: 抵消法

func isAnagram(s string, t string) bool {
	strCount := make(map[byte]int)
	for i := range s {
		strCount[s[i]] ++
	}
	for i := range t {
		strCount[t[i]] --
	}

	for _, count := range strCount {
		if count != 0 {
			return false
		}
	}
	return true
}

抵消法优化

func isAnagram(s string, t string) bool {
	if len(s) != len(t) {
		return false
	}
	strCount := make(map[byte]int)
	for i := range s {
		strCount[s[i]] ++
	}
	for i := range t {
		if _, ok := strCount[t[i]]; ok {
			strCount[t[i]] -- 
			if strCount[t[i]] < 0 {
				return false
			}
		} else {
			return false
		}
	}

	return true
}