哈希表(Hash table): 又名离散表,根据关键码的值而直接进行访问的数据结构。可以用来快速判断一个元素是否出现集合中。
一.有效的字母异位词
LeetCode题目链接:242. 有效的字母异位词
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。s
和 t
仅包含小写字母
注意:若 s
和 t
中每个字符出现的次数都相同,则称 s
和 t
互为字母异位词。
示例 1: 输入: s = “anagram”, t = “nagaram” 输出: true
示例 2: 输入: s = “rat”, t = “car” 输出: false
数组法:
- 思路:先分别求出两个字符串中每个字符出现的次数,然后在比较;易知字母的个数为26且都为小写字母,故可用长度为26的数组存储出现的次数,分别得出两个数组进行比较,然而也可采用一个数组,第一个字符串时用累计,第二个字符串用减,最后校验数字的每个元素 当都为0时可得 互为字母异位词。
- 代码实现
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) {
return false;
}
int[] record = new int[26];
for (int i = 0; i < s.length(); i++) {
record[s.charAt(i) - 'a']++;
record[t.charAt(i) - 'a']--;
}
for (int val : record) {
if (val != 0) {
return false;
}
}
return true;
}
-
复杂度分析
时间复杂度:O(n)
空间复杂度:O(1)