力扣训练第二天1-3

1.

 

/**

 * @param {string} s

 * @return {number}

 */

var firstUniqChar = function(s) {

    // 创建一个map对象

    let map = new Map()

    // 统计次数

    for (let i = 0; i < s.length; i++) {

        //拿到第i+1个字母

        let word = s.charAt(i)

        //val查询是否有,如果没有存成第一个,有存起来

        let val = map.get(word)

        if (map.has(word)) {

            map.set(word, val + 1)

        } else {

            map.set(word, 1)

        }

    }

    // 找到第一个只出现一次的字母

    for (let i = 0; i < s.length; i++) {

        //查询一个字母存在的个数返回索引

        if (map.get(s.charAt(i)) === 1) {

            return i

        }

    }

    return -1

};

2.

 

/**

 * @param {string} ransomNote

 * @param {string} magazine

 * @return {boolean}

 */

var canConstruct = function(ransomNote, magazine) {

    //创建集合

    let dic = new Map;

    //把magazine每个字都分割开并循环

    magazine.split('').forEach((item)=>{

        //三目表达式 如果dic有那个字母 则dic赋值字母:字母+1 有可能+2+3  

        //如果没有 则字母 1

        dic.has(item) ? dic.set(item,dic.get(item)+1) : dic.set(item,1);

    });

    //循环被构成

    for(let w of ransomNote){

        //如果没有 有返回的值小于0则返回flase(使用超过一次)

        if(!dic.has(w) || dic.get(w) <= 0) return false;

        //有一个前面增加的数目减一

        dic.set(w,dic.get(w) - 1);

    }

    return true;

};

3.

 

/**

 * @param {string} s

 * @param {string} t

 * @return {boolean}

 */

var isAnagram = function(s, t) {

//先判断个数

if(s.length != t.length){

    return false;

  } 

  let result = false;

  let sArr = s.split('');

  let tArr = t.split('');

  //把两个字符串分开

  sArr.map((k)=>{

    //findIndex返回符合条件的第一个的索引返回

    let index = tArr.findIndex(u=>u==k);

    //如果有

    if(index>=0){

       // 第二个数组掉重复的第一个继续循环

      tArr.splice(index,1);

    }

    return k;

  })

 //如果删干净了则arr没了返回false 取反返回true代表俩数组内容一样

  return !tArr.length;

};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值