js字符串方法 字符串中出现次数最多的字符和出现的次数

简介: 在JavaScript中,字符串是一种常见的数据类型。由于字符串在实际应用中十分常见,所以JavaScript提供了很多字符串方法来方便我们的操作。本篇博客将介绍其中一种常见的需求——查找字符串中出现次数最多的字符和出现的次数。下面是几种不同的实现思路。

在JavaScript中,字符串是一种常见的数据类型。由于字符串在实际应用中十分常见,所以JavaScript提供了很多字符串方法来方便我们的操作。本篇博客将介绍其中一种常见的需求——查找字符串中出现次数最多的字符和出现的次数。下面是几种不同的实现思路。


1.基于对象的实现思路

我们可以定义一个空对象,然后遍历字符串中的每个字符,通过判断对象中是否已经存在该字符,并进行相应的计数操作。最后再遍历一遍对象,找出出现次数最多的字符即可。


const getMaxCount1 = (str) => {
  let json = {};
  for (let i = 0; i < str.length; i++) {
    if (!json[str.charAt(i)]) {
      json[str.charAt(i)] = 1;
    } else {
      json[str.charAt(i)]++;
    }
  }
  let maxCountChar = "";
  let maxCount = 0;
  for (const key in json) {
    if (json[key] > maxCount) {
      maxCount = json[key];
      maxCountChar = key;
    }
  }
  return `出现最多的字符${maxCountChar},出现的次数是${maxCount}`;
};


 2.基于排序和lastIndexOf方法的实现思路

我们可以将字符串转换为数组,对数组进行排序,然后遍历每个字符,使用lastIndexOf方法查找该字符在字符串中最后一次出现的位置,从而得到该字符的出现次数。最后再比较出现次数即可。


const getMaxCount2 = (str) => {
  let maxCountChar = "";
  let maxCount = 0;
  str = str.split("").sort().join("");
  for (let i = 0, j = str.length; i < j; i++) {
    let char = str.charAt(i);
    let charCount = str.lastIndexOf(char) - i + 1;
    if (charCount > maxCount) {
      maxCount = charCount;
      maxCountChar = char;
    }
    i = str.lastIndexOf(char);
  }
  return `出现最多的字符${maxCountChar},出现的次数是${maxCount}`;
};

3.基于正则表达式的实现思路

我们同样可以将字符串转换为数组,对数组进行排序,然后使用正则表达式匹配出连续出现的字符,并得到它们的出现次数。最后再比较出现次数即可。


const getMaxCount3 = (str) => {
  let maxCountChar = "";
  let maxCount = 0;
  str = str.split("").sort().join("");
  let arr = str.match(/(\w)\1+/g);
  for (let i = 0; i < arr.length; i++) {
    let length = arr[i].length;
    if (length > maxCount) {
      maxCount = length;
      maxCountChar = arr[i][0];
    }
  }
  return `出现最多的字符${maxCountChar},出现的次数是${maxCount}`;
};

4.基于replace方法的实现思路

我们可以使用字符串的replace方法,将字符串中的某个字符替换为空字符串,然后计算字符串长度的变化来得到该字符的出现次数。最后再比较出现次数即可。


const getMaxCount4 = (str) => {
  let maxCountChar = "";
  let maxCount = 0;
  while (str) {
    let length = str.length;
    let char = str.charAt(0);
    let reg = new RegExp(char, "g");
    str = str.replace(reg, "");
    let restLength = str.length;
    let charCount = length - restLength;
    if (charCount > maxCount) {
      maxCount = charCount;
      maxCountChar = char;
    }
  }
  return `出现最多的字符${maxCountChar},出现的次数是${maxCount}`;
};

通过以上四种不同的实现思路,我们可以得到字符串中出现次数最多的字符和出现的次数。根据实际需求和场景的不同,可以选择合适的方法来进行实现。


相关文章
|
5天前
|
存储 JavaScript 前端开发
史上最详细JavaScript数组去重方法(11种)
使用set和Array.from ()方法 array.from可以将set结构转成数组
20 7
|
1天前
|
前端开发 JavaScript 开发者
JavaScript中的异步编程方法总结
在JavaScript开发中,处理异步操作是非常常见的情况。本文将总结JavaScript中常用的异步编程方法,包括Callback、Promise、Async/Await等,分析其优缺点,并提供使用建议。
|
3天前
|
缓存 前端开发 JavaScript
React和Next.js开发常见的HTTP请求方法
React和Next.js开发常见的HTTP请求方法
6 0
|
3天前
|
前端开发 JavaScript
前端 JS 经典:Math 常用方法汇总
前端 JS 经典:Math 常用方法汇总
6 0
|
3天前
|
前端开发 JavaScript
前端 js 经典:Object 常用原生方法
前端 js 经典:Object 常用原生方法
10 2
|
3天前
|
前端开发 JavaScript
前端 js 经典:array 原生方法
前端 js 经典:array 原生方法
7 1
|
3天前
|
JSON JavaScript 前端开发
js将json字符串还原为json对象
【5月更文挑战第14天】js将json字符串还原为json对象
26 1
|
3天前
|
JavaScript 前端开发
JS中正则方法的使用 - 蓝易云
以上就是JavaScript中正则方法的基本使用。这些方法可以用于执行复杂的字符串处理和验证任务。
19 1
|
4天前
|
JavaScript 前端开发
JavaScript中科学计数法转化为数值字符串形式
JavaScript中科学计数法转化为数值字符串形式
|
4天前
|
JavaScript 前端开发
JavaScript的`apply`方法:函数的“应用”与“调用”
JavaScript的`apply`方法:函数的“应用”与“调用”