LeetCode 242. Valid Anagram 题解题目描述给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词。示例 1输入: s anagram, t nagaram 输出: true示例 2输入: s rat, t car 输出: false解题思路方法一排序对两个字符串排序后比较是否相等方法二哈希表计数统计每个字符出现的次数比较两个字符串的字符计数是否相同代码实现方法一排序def isAnagram(s, t): return sorted(s) sorted(t)方法二哈希表计数from collections import Counter def isAnagram(s, t): return Counter(s) Counter(t)方法三数组计数def isAnagram(s, t): if len(s) ! len(t): return False count [0] * 26 for c in s: count[ord(c) - ord(a)] 1 for c in t: count[ord(c) - ord(a)] - 1 if count[ord(c) - ord(a)] 0: return False return True复杂度分析方法时间复杂度空间复杂度排序O(n log n)O(n)哈希表O(n)O(n)数组O(n)O(1)测试案例# 测试案例 1 assert isAnagram(anagram, nagaram) True # 测试案例 2 assert isAnagram(rat, car) False # 测试案例 3 assert isAnagram(, ) True # 测试案例 4 assert isAnagram(a, ab) False总结本题是字符串处理的基础问题。关键点排序比较字符计数边界条件处理通过本题可以深入理解字符串处理的基本方法。
LeetCode 242. Valid Anagram 题解
LeetCode 242. Valid Anagram 题解题目描述给定两个字符串 s 和 t 编写一个函数来判断 t 是否是 s 的字母异位词。示例 1输入: s anagram, t nagaram 输出: true示例 2输入: s rat, t car 输出: false解题思路方法一排序对两个字符串排序后比较是否相等方法二哈希表计数统计每个字符出现的次数比较两个字符串的字符计数是否相同代码实现方法一排序def isAnagram(s, t): return sorted(s) sorted(t)方法二哈希表计数from collections import Counter def isAnagram(s, t): return Counter(s) Counter(t)方法三数组计数def isAnagram(s, t): if len(s) ! len(t): return False count [0] * 26 for c in s: count[ord(c) - ord(a)] 1 for c in t: count[ord(c) - ord(a)] - 1 if count[ord(c) - ord(a)] 0: return False return True复杂度分析方法时间复杂度空间复杂度排序O(n log n)O(n)哈希表O(n)O(n)数组O(n)O(1)测试案例# 测试案例 1 assert isAnagram(anagram, nagaram) True # 测试案例 2 assert isAnagram(rat, car) False # 测试案例 3 assert isAnagram(, ) True # 测试案例 4 assert isAnagram(a, ab) False总结本题是字符串处理的基础问题。关键点排序比较字符计数边界条件处理通过本题可以深入理解字符串处理的基本方法。