1. 有效字母的异位词(LeetCode 242)
题目:给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
- 若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
- s和t仅包含小写字母
思路:使用大小为26的数组存储单词中每个字母出现的次数
- 因为题目限制了字符的范围,所以才能用数组作为表
java:str.charAt(pos)
返回的是该位置上的字符
class Solution {
public boolean isAnagram(String s, String t) {
//字符串s和t仅包含小写字母
int[] record = new int[26];
for(int i = 0; i < s.length(); ++i){
record[s.charAt(i)-'a']++;
}
for(int i = 0; i < t.length(); ++i){
record[t.charAt(i)-'a']--;
}
for(int i = 0; i<26; ++i){
if(record[i] != 0) return false;
}
return true;
}
}
2. 两个数组的交集(LeetCode 349)
题目:给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以不考虑输出结果的顺序 。
java:
HashSet
的常用方法:add()
,contains()
,remove()
- 字符串的长度
str.length()
;数组的长度nums.length
- HashSet转为int数组的方式
set.stream().mapToInt(x -> x).toArray()
import java.util.HashSet;
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
HashSet<Integer> record1 = new HashSet<>();
HashSet<Integer> same = new HashSet<>();
for(int i = 0; i<nums1.length; ++i){
record1.add(nums1[i]);
}
for(int i = 0; i<nums2.length; ++i){
if(record1.contains(nums2[i])){
same.add(nums2[i]);
}
}
//HashSet转化为数组的方式
return same.stream().mapToInt(x -> x).toArray();
}
}
标签:java,哈希,HashSet,int,算法,length,数组,new
From: https://www.cnblogs.com/hifrank/p/18025022