我的js算法爬坑之旅- 找不同

164 阅读1分钟

第七十二天:力扣389题,找不同

地址:leetcode-cn.com/problems/fi…

思路:1.排序比对。2.map查找。

function findTheDifference(s: string, t: string): string {
  let strs:Array<string> = s.split('').sort();// 转成数组好排序
  let strt:Array<string> = t.split('').sort();
  for(let i:number = 0; i < strs.length; i++)
  {
    if(strs[i] !== strt[i])
    {
      return strt[i];// 不同即输出
    }
  }
  return strt[strt.length - 1]; // 超过strs长度的肯定就是最后一位不同了
};

map查找:

function findTheDifference(s: string, t: string): string {
  let strs:Array<string> = s.split('').sort();
  let strt:Array<string> = t.split('').sort();
  let res:Map<string, number> = new Map();// 转成map好插入与查找
  let arr:Map<string, number> = new Map();
  for( let i of strs)
  {
    res.has(i) ? res.set(i, res.get(i) + 1) : res.set(i, 0);//没有直接插入,有了就数量加一
  }
  for( let i of strt)
  {
    arr.has(i) ? arr.set(i, arr.get(i) + 1) : arr.set(i, 0);
  }
  for( let i of strt)
  {
    if(res.get(i) !== arr.get(i))//值不对就输出
    {
      return i;
    }
  }
};