LeetCode242-有效的字母异位词

题目链接

英文链接:https://leetcode.com/problems/valid-anagram/

中文链接:https://leetcode-cn.com/problems/valid-anagram/

题目详述

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

示例 1:

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

示例 2:

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

说明:
你可以假设字符串只包含小写字母。

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

题目详解

本题比较简单,与 LeetCode383-赎金信 的区别在于: LeetCode383-赎金信 只需要字符串有足够的多字符能组成另一个字符串即可,而本题则要求两个字符串的每个字符的个数必须相同。可以在 LeetCode383-赎金信 的基础上加一个判断条件,只要两个字符串的长度不等,那么不可能满足要求。长度相等时依旧可以用原来的方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class LeetCode_00242 {

public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
int[] cnt = new int[26];
for (int i = 0; i < s.length(); ++i) {
++cnt[s.charAt(i) - 'a'];
}
for (int i = 0; i < t.length(); ++i) {
if (--cnt[t.charAt(i) - 'a'] < 0) {
return false;
}
}
return true;
}
}