🟢 有效的字母异位词
📝 题目描述
给定两个字符串s
和t
,编写一个函数来判断t
是否是s
的字母异位词。
需要注意的是,若s
和t
中每个字符出现的次数都相同,则称s
和t
互为字母异位词。
📋 代码模板
java
class Solution {
public boolean isAnagram(String s, String t) {
}
}
💡 提示
和 都仅包含小写字母
🚀 示例
🖊️ 题解
如果
我们可以首先遍历字符串 1
),则直接返回false
。最后,在两轮遍历结束后,可返回true
,此时说明了
由于字符串 letter
,计算公式为 letter - 'a'
。这样一来,abc..xyz
26个英文字母就分别对应了0 - 25
。
java
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
int[] cmt = new int[26];
for (char c : s.toCharArray()) {
cmt[c - 'a']++;
}
for (char c : t.toCharArray()) {
if (--cmt[c - 'a'] < 0) {
return false;
}
}
return true;
}
}
💭 复杂度分析
基于哈希表
的解决方案的复杂度分析如下。
- 时间复杂度:
,其中 为字符串 的长度, 为字符串 的长度。 - 空间复杂度:
,其中 为26,即全部小写英文字母的数量。