快乐数没写出来,递归思路错误。
242.有效的字母异位词
哈希
class Solution {
public boolean isAnagram(String s, String t) {
if(s.length() != t.length()) return false;
if (s == null || t == null) return false;
Map<Character, Integer> map1 = new HashMap<>();
Map<Character, Integer> map2 = new HashMap<>();
for (int i = 0; i < s.length(); i++) {
if (map1.containsKey(s.charAt(i))){
map1.put(s.charAt(i),map1.get(s.charAt(i)) + 1);
}else {
map1.put(s.charAt(i), 1);
}
}
for (int i = 0; i < t.length(); i++) {
if (map2.containsKey(t.charAt(i))){
map2.put(t.charAt(i),map2.get(t.charAt(i)) + 1);
}else {
map2.put(t.charAt(i), 1);
}
}
if (! map1.equals(map2) ) return false;
return true;
}
}
数组:
class Solution {
public boolean isAnagram(String s, String t) {
int[] count1 = encode(s);
int[] count2 = encode(t);
// 确保两个字符串中所有字符出现的数量相同
for (int i = 0; i < count1.length; i++) {
if (count1[i] != count2[i]) {
return false;
}
}
return true;
}
// 计算字符的出现次数
int[] encode(String s) {
int[] count = new int[26];
for (char c : s.toCharArray()) {
int delta = c - 'a';
count[delta]++;
}
return count;
}
}
349. 两个数组的交集
class Solution {
public int[] intersection(int[] nums1, int[] nums2) {
Set<Integer> set1 = new HashSet<>();
Set<Integer> set2 = new HashSet<>();
List<Integer> list = new LinkedList<>();
for (int i : nums1) {
set1.add(i);
}
for (int i : nums2) {
set2.add(i);
}
for (Integer integer1 : set1) {
if (set2.contains(integer1)){
list.add(integer1);
}
}
int[] res = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
res[i] = list.get(i);
}
return res;
}
}
● 1. 两数之和
class Solution {
public int[] twoSum(int[] nums, int target) {
HashMap<Integer, Integer> valToIndex = new HashMap<>();
for (int i = 0; i < nums.length; i++) {
// 查表,看看是否有能和 nums[i] 凑出 target 的元素
int need = target - nums[i];
if (valToIndex.containsKey(need)) {
return new int[]{valToIndex.get(need), i};
}
// 存入 val -> index 的映射
valToIndex.put(nums[i], i);
}
return null;
}
}
● 202. 快乐数
class Solution {
private int getNext(int n) {
int totalSum = 0;
while (n > 0) {
int d = n % 10;
n = n / 10;
totalSum += d * d;
}
return totalSum;
}
public boolean isHappy(int n) {
Set<Integer> seen = new HashSet<>();
while (n != 1 && !seen.contains(n)) {
seen.add(n);
n = getNext(n);
}
return n == 1;
}
}