有效的字母异位词

题目

242. 有效的字母异位词

给定两个字符串 st ,编写一个函数来判断 t 是否是 s字母异位词

字母异位词

字母异位词是通过重新排列不同单词或短语的字母而形成的单词或短语,并使用所有原字母一次。

示例 1:

1
2
输入: s = "anagram", t = "nagaram"
输出: true

示例 2:

1
2
输入: s = "rat", t = "car"
输出: false

提示:

  • 1 <= s.length, t.length <= 5 * 104
  • st 仅包含小写字母

进阶: 如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

题解

题解一

按照同一规则排序后比较是否相同

1
2
3
4
5
6
7
8
9
10
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
char[] str1 = s.toCharArray();
char[] str2 = t.toCharArray();
Arrays.sort(str1);
Arrays.sort(str2);
return Arrays.equals(str1, str2);
}

image-20241122224747139

解法二

todo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static boolean isAnagram(String s, String t) {
if (t.length()!= s.length()) {
return false;
}
int[] hash = new int[26];
char[] charArray = s.toCharArray();
for (char c : charArray) {
hash[c - 'a']++;
}

char[] tCharArray = t.toCharArray();
for (char c : tCharArray) {
hash[c - 'a']--;
if (hash[c - 'a'] < 0) {
return false;
}
}
return true;
}

image-20241122224907930