zoukankan      html  css  js  c++  java
  • 389.找不同

    2020-05-06
    找不同

    给定两个字符串 s 和 t,它们只包含小写字母。

    字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。

    请找出在 t 中被添加的字母。

    题解:
    思路1:转为ASC2码后排序
    var findTheDifference = function (s, t) {
      s = s.split('').sort((a, b) => a.charCodeAt() - b.charCodeAt());
      t = t.split('').sort((a, b) => a.charCodeAt() - b.charCodeAt());
      // 排序后 第一个不相等的就是新加入的
      for (let i in s) {
        if (s[i] !== t[i]) return t[i];
      }
      return t[t.length - 1]; // 遍历一遍没找到 说明插入在最后一个
    }
    思路2:哈希表
    var findTheDifference = function (s, t) {
      let newMap = new Map(); // 新建一个Map存哈希
      for (let v of s) {
        if (newMap.has(v)) newMap.set(v, newMap.get(v) + 1); // 将S字符串中的每一项存入哈希表中
        else newMap.set(v, 1);
      }
      for (let v of t) {
        let val = newMap.get(v); // 再遍历T取每一项 有的话减掉1 
        if (val === 0 || val === undefined) return v; // 如果值为0  说明T比S多一个这个字符 如果为undefined 说明S中不存在这个字符
        else newMap.set(v, val - 1);
      }
    }
  • 相关阅读:
    java接口定义和作用
    8-12接口测试进阶-2源码分析
    接口测试3-4使用csv进行接口测试
    接口测试3-3Excel格式
    接口测试3-2csv格式
    java study2
    接口测试进阶3-1数据驱动测试
    java study1
    REST-assured 3发送图片
    codeforces 659C C. Tanya and Toys(水题+map)
  • 原文地址:https://www.cnblogs.com/lanpang9661/p/12834343.html
Copyright © 2011-2022 走看看