有效字母异位(力扣242)
很经典的字母映射方法
class Solution {
public boolean isAnagram(String s, String t) {
int[] aum = new int[26];
int[] bum = new int[26];
for(int i = 0; i < s.length(); i++){
aum[s.charAt(i)-'a']++;
}
for(int i = 0; i < t.length(); i++){
bum[t.charAt(i)-'a']++;
}
for(int i = 0; i < 26; i++){
if(aum[i] != bum[i]) return false;
}
return true;
}
}
两数组交集(力扣349)
import java.util.HashSet;
import java.util.Set;
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
if(nums1.length == 0 || nums2.length == 0){
return new int[0];
}
Set<Integer> hs = new HashSet();
Set<Integer> ms = new HashSet();
for(int i: nums1){
hs.add(i);
}
for(int i: nums2){
if(hs.contains(i)){
ms.add(i);
}
}
int[] aum = new int[ms.size()];
int j = 0;
for(int i: ms){
aum[j] = i;
j++;
}
return aum;
}
}
快来数(力扣202)
import java.util.HashSet;
import java.util.Set;
class Solution {
public boolean isHappy(int n) {
Set<Integer> hs = new HashSet();
while(n != 1){
n = getnum(n);
if(hs.contains(n)){
return false;
}
hs.add(n);
}
return true;
}
int getnum(int n) {
int res = 0;
while (n > 0) {
int temp = n % 10;
res += temp * temp;
n = n / 10;
}
return res;
}
}
两数之和(力扣1)
import java.util.HashMap;
import java.util.Map;
class Solution {
public int[] twoSum(int[] nums, int target) {
int[] aus = new int[2];
Map<Integer,Integer> m = new HashMap();
for(int i = 0; i < nums.length; i++){
int temp = target - nums[i];
if(m.containsKey(temp)){
aus[0] = i;
aus[1] = m.get(temp);
return aus;
}
m.put(nums[i], i);
}
return new int[2];
}
}
总结
今天的题目都很简单,点出了用散列表的方法基本很快就能做出来;
什么时候用散列表:当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法。