代码随想录 | Day05 | 哈希表 part01 | 242.有效的字母异位词 | 349. 两个数组的交集 | 202. 快乐 | 1. 两数之和

86 阅读1分钟

242.有效的字母异位词

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词

var isAnagram = function(s, t) {
    if(s.length !== t.length ) return false
    let map = {}

    for(let v of s){
        if(!(v in map)){
            map[v] = 1
        }else{
            map[v]++
        }
    }

    for(let v of t){
        map[v]--
    }

    for(let v in map){
        if(map[v] > 0 || map[v] == undefined){
            return false
        }
    }
     return true
};

349. 两个数组的交集

var intersection = function(nums1, nums2) {
    let map = new Map()

    for(let v of nums1){
        map.set(v)
    }
    let res = new Set()
    for(let v of nums2){
        if(map.has(v)){
           res.add(v)
        }
    }

    return [...res]
};

202. 快乐数

编写一个算法来判断一个数 n 是不是快乐数。

「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返回 true ;不是,则返回 false

主要的点: 在JS里使用getSum方法时,由于不能定义int类型,需要在除后进行取整

var isHappy = function(n) {
    let map = new Map()

    while(true){
        if(map.has(n)){
            return false
        }
        if(n===1) return true
        map.set(n)
        n = getSum(n)
    }

};

function getSum(n){
    let nextN = 0
    while(n>=1){
        nextN += (n%10) * (n%10)
        n = Math.floor(n/10)
    }

    return nextN
}

1. 两数之和

var twoSum = function(nums, target) {
    let map = new Map()

    for(let i in nums){
        if(map.has(target-nums[i]))
        {
            return [i,map.get(target-nums[i])]
        }
        map.set(nums[i],i)
    }
    return false
};