242. 有效的字母异位词
1. 题目
给定两个字符串 s
和 t
,编写一个函数来判断 t
是否是 s
的字母异位词。
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
示例 1:
1 | 输入: s = "anagram", t = "nagaram" |
示例 2:
1 | 输入: s = "rat", t = "car" |
提示:
1 <= s.length, t.length <= 5 * 104
s
和t
仅包含小写字母
2. 思路
- 由提示可知该题目仅包含小写字母,因此初始化
map
哈希数组用于存储每个字母出现的次数 - 当两个字符串长度不一样时,则不可能是有效的字母异位词,因此可直接返回
false
- 遍历字符数组,对于
s
字符串出现的字符,则对哈希数组计数进行+1,对于t
字符串出现的字符,则对哈希数组计数进行-1 - 遍历完成后再依次确认
map
哈希数组的每个位置是否都为0,如果不为0则说明出现了差异化字母,此时直接返回false
- 采取一正一负的抵消策略,有效的字母异位词应当在最后保证所有的计数都抵消为0
3. 代码
1 | class Solution { |
4. 复杂度
- 时间复杂度:O(n)
- 空间复杂度:O(n)