哈希表都是用来快速判断一个元素是否出现集合里
题目:
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
首先:什么是字母异位词 :若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
例如:
s = "anagram", t = "nagaram" 是字母异位词
s = "rat", t = "car" 不是字母异位词。
综上分析可以得到,字母异位词必须是相同长度的字符串
我们记录s和t如下
s = "anagram"
t = "nagaram"
【第一步】首先我们创建一个数组来记录s中有多少个字母出现,出现了多少次,
int[] table = new int[26];
for (char aChar : chars) {
table[aChar - 'a']++;
}
【第二步】然后用字符串t对s生成的数组进行消除。
for (char c : t.toCharArray()) {
table[c-'a']--;
}
【第三步】如果数组table中所有元素都为0,则他们是字母异位词
【代码如下】
package hash;
public class IsAnagram {
public static void main(String[] args) {
String s = "rat";
String t = "cat";
boolean result = isAnagram(s, t);
System.out.println(result);
}
public static boolean isAnagram(String s, String t) {
if(s.length() != t.length()) {
return false;
}
int[] table = new int[26];
char[] chars = s.toCharArray();
for (char aChar : chars) {
table[aChar - 'a']++;
}
for (char c : t.toCharArray()) {
table[c-'a']--;
}
for (int i : table) {
if (i != 0) {
return false;
}
}
return true;
}
}