今天开始一刷Hash表部分的题,本题是入门题,用一个数组代表哈希表,S中的字母出现一次,就在相应位置的数组+1,T中的字母出现一次,就在数组相应位置-1。如果数组中存在不为0的数,则说明S和T中的字母存在不同,返回false。
//自己编写的代码
class Solution {
public boolean isAnagram(String s, String t) {
if (s.length() != t.length()) return false;
int[] temp = new int[26];
for (int i = 0;i < s.length(); i ++) {
temp[s.charAt(i) - 'a'] ++;
}
for (int j = 0;j < t.length(); j ++) {
temp[t.charAt(j) - 'a'] --;
}
for (int res : temp) {
if (res != 0) {
return false;
}
}
return true;
}
}
//标准答案,比较简洁
class Solution {
public boolean isAnagram(String s, String t) {
int[] record = new int[26];
for (char c : s.toCharArray()) {
record[c - 'a'] += 1;
}
for (char c : t.toCharArray()) {
record[c - 'a'] -= 1;
}
for (int i : record) {
if (i != 0) {
return false;
}
}
return true;
}
}