1. 背景
好多的leetcode可以采用哈希表来缓存一下数据,以空间换时间来解决
2. 实例
2.1 205. 同构字符串
需要注意不同的字段不可以对应同一个字段
ini
public boolean isIsomorphic(String s, String t) {
Map<Character, Character> reflectMap = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
if (reflectMap.containsKey(c)){
Character character = reflectMap.get(c);
if (character != t.charAt(i)){
return false;
}
} else {
if (reflectMap.containsValue(t.charAt(i))){
return false;
}
reflectMap.put(c, t.charAt(i));
}
}
return true;
}
2.2 383. 赎金信
可以利用数组的索引充当哈希表的key
arduino
public boolean canConstruct(String ransomNote, String magazine) {
if (ransomNote.length() > magazine.length()) {
return false;
}
int[] arr = new int[26];
for (int i = 0; i < magazine.length(); i++) {
arr[ magazine.charAt(i) - 'a'] ++;
}
for (int i = 0; i < ransomNote.length(); i++) {
arr[ransomNote.charAt(i) - 'a'] --;
if (arr[ransomNote.charAt(i) - 'a'] < 0){
return false;
}
}
return true;
}