publicbooleanisAnagram(String s,String t){HashMap<Character,Integer> map =newHashMap();int sLen = s.length();int tLen = t.length();if(sLen != tLen)returnfalse;// 统计词频for(int i =0; i < s.length(); i++){char ch = s.charAt(i);map.put(ch,map.getOrDefault(ch,0)+1);}//输入: s = "anagram", t = "nagaram"//输出: true// 若某个字符频数小于0,则绝对不是异位词for(int i =0; i < t.length(); i++){char c = t.charAt(i);if(map.containsKey(c)){if(map.get(c)<=0){returnfalse;}map.put(c,map.get(c)-1);}else{returnfalse;}}returntrue;}
349. 两个数组的交集
使用map方法
publicint[]intersection(int[] nums1,int[] nums2){// 找到长度小的数组int size1 = nums1.length;int size2 = nums2.length;if(size1 > size2){returnintersectionNum(nums2,nums1);}else{returnintersectionNum(nums1,nums2);}}publicint[]intersectionNum(int[] mapNum,int[] computeNum){List<Integer> res =newArrayList<>();HashMap<Integer,Integer> map =newHashMap<>();for(int i =0; i < mapNum.length; i++){map.put(mapNum[i],map.getOrDefault(mapNum[i],0)+1);}for(int i =0; i < computeNum.length; i++){if(map.containsKey(computeNum[i])&& map.get(computeNum[i])!=-1){map.put(computeNum[i],-1);res.add(computeNum[i]);}}return res.stream().mapToInt(Integer::intValue).toArray();}
使用set方法
publicint[]intersection(int[] nums1,int[] nums2){List<Integer> res =newArrayList<>();HashSet<Integer> set =newHashSet<>();for(int num : nums1){set.add(num);}for(int num :nums2){if(set.contains(num)){set.remove(num);res.add(num);}}return res.stream().mapToInt(Integer::intValue).toArray();}
202. 快乐数
publicintgetSum(int n){int sum =0;while(n !=0){int bit = n %10;// 9n = n /10;// 1sum +=Math.pow(bit,2);// 0 + 9}return sum;}publicbooleanisHappy(int n){// 无限循环代表会重复出现该sumHashSet<Integer> set =newHashSet<>();while(n !=1&&!set.contains(n)){set.add(n);n =getSum(n);}return n ==1;}
publicintgetSum(int n){int sum =0;while(n !=0){int bit = n %10;// 9n = n /10;// 1sum +=Math.pow(bit,2);// 0 + 9}return sum;}publicbooleanisHappy(int n){// 无限循环代表会重复出现该sumHashSet<Integer> set =newHashSet<>();while(true){if(n ==1)returntrue;if(set.contains(n))returnfalse;set.add(n);n =getSum(n);}}
1. 两数之和
publicint[]twoSum(int[] nums,int target){HashMap<Integer,Integer> map =newHashMap<>();//输入:nums = [2,7,11,15], target = 9//输出:[0,1]//解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。int[] res =newint[2];for(int i =0; i < nums.length; i++){if(map.containsKey(target-nums[i])){res[0]= map.get(target-nums[i]);res[1]= i;}map.put(nums[i],i);}return res;}