美文网首页数据解构和算法
46.字符串中出现最多字符以及出现次数

46.字符串中出现最多字符以及出现次数

作者: wo不是黄蓉 | 来源:发表于2022-02-07 20:11 被阅读0次

    day2:js基础->算法。
    跟着b站学算法->
    实现的几种思路:

    • 使用map方法存储每个字符出现的次数
    • 使用对象键值对的方式存储每个字符出现的次数(和map实现思路很像)
    • 使用sort方法加上indexOf和lastIndexOf方法,最后出现次数减去第一个出现位置就是字符出现的次数
    /**
     *  使用map方法存储
     *  使用对象键值存储的方法
     *  使用排序+indexof和lastIndexOf方法
     */
    function getMaxCount(str) {
      let map = new Map();
      let maxLen = 0,
        maxStr = undefined;
      for (let index = 0; index < str.length; index++) {
        const element = str[index].charCodeAt(0);
        if (!map.has(str[index])) {
          map.set(str[index], 1);
        } else {
          map.set(str[index], map.get(str[index]) + 1);
          if (map.get(str[index]) > maxLen) {
            maxLen = map.get(str[index]);
            maxStr = str[index];
          }
        }
      }
      return "最长字符串为:" + maxStr + ",长度为:" + maxLen;
    }
    function getMaxCount1(str) {
      let json = {};
      let maxLen = 0,
        maxStr = null;
      for (let index = 0; index < str.length; index++) {
        const element = str[index];
        // console.log(element);
        if (!json[element]) {
          json[element] = 1;
        } else {
          json[element] = json[element] + 1;
          if (json[element] > maxLen) {
            maxLen = json[element];
            maxStr = element;
          }
        }
      }
      // console.log(json);
      return "最长字符串为:" + maxStr + ",长度为:" + maxLen;
    }
    
    function getMaxCount2(str) {
      let strArr = [...str].sort();
      // console.log(strArr.sort());
      let maxLen = 0,
        maxStr = null;
      for (let index = 0; index < strArr.length; index++) {
        const element = strArr[index];
        let fIndex = strArr.indexOf(element),
          lastindex = strArr.lastIndexOf(element);
        // console.log(element, fIndex, lastindex, lastindex - fIndex + 1);
        if (lastindex - fIndex + 1 > maxLen) {
          maxLen = lastindex - fIndex + 1;
          maxStr = element;
        }
      }
      return "最长字符串为:" + maxStr + ",长度为:" + maxLen;
    }
    const str = "hello javascript hello css hello you!";
    // console.log(getMaxCount(str));
    console.log(getMaxCount1(str));
    console.log(getMaxCount2(str));
    
    

    相关文章

      网友评论

        本文标题:46.字符串中出现最多字符以及出现次数

        本文链接:https://www.haomeiwen.com/subject/hffvkrtx.html