我们要解题,先要了解什么是“变位词”,一种把某个词或句子的字母的位置(顺序)加以改换所形成的新词。
例如:said(说,say的过去式)就有dais(讲台)这个变位词。
例题:假设有两个字符串s和t,请问如何判断它们是否为变位词?
分析:我们可以使用哈希表来解决这个问题。具体实现时,我们可以定义两个哈希表map1和map2,分别统计字符串s和t中每个字符出现的次数,然后比较两个哈希表是否相等即可。
Java代码实现:
public static boolean isAnagram(String s, String t) {
if (s == null || t == null || s.length() != t.length()) {
return false;
}
Map<Character, Integer> map1 = new HashMap<>();
Map<Character, Integer> map2 = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c1 = s.charAt(i);
char c2 = t.charAt(i);
map1.put(c1, map1.getOrDefault(c1, 0) + 1);
map2.put(c2, map2.getOrDefault(c2, 0) + 1);
}
return map1.equals(map2);
}
代码分析:
- 定义两个哈希表map1和map2,分别统计字符串s和t中每个字符出现的次数。
- 比较两个哈希表是否相等。