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天前
|
JSON JavaScript 前端开发
JavaScript实现字符串转json对象的方法
JavaScript实现字符串转json对象的方法
|
1天前
|
JavaScript 数据安全/隐私保护
如何在Vue组件中调用封装好的外部js文件方法
这篇文章介绍了如何在Vue组件中调用封装好的外部js文件方法,包括在Vue项目中全局引入外部js文件,并在组件中通过this.$myMethod()的方式调用外部js文件中定义的方法。
如何在Vue组件中调用封装好的外部js文件方法
|
4天前
|
JavaScript 测试技术 索引
js数组方法汇总
js数组方法汇总
7 1
|
1天前
|
JavaScript Linux
2022年超详细在CentOS 7上安装Node.js方法(源码安装)
这篇文章介绍了在CentOS 7系统上通过源码安装Node.js的详细步骤,包括从官网下载Node.js源码包、将安装包上传至虚拟机、解压安装包、删除压缩文件、编译安装Node.js、检查Node.js和npm版本,以及切换npm源到淘宝镜像以加速下载。此外,还提供了一个获取Linux下Node.js离线安装包的微信公众号搜索方式。
|
5天前
|
JavaScript 前端开发
javascript中常见获取时间戳的方法
javascript中常见获取时间戳的方法
12 0
|
5天前
|
JavaScript 前端开发
js中this是指向的哪个全局变量,改变this指向的方法有什么?
js中this是指向的哪个全局变量,改变this指向的方法有什么?
6 0
|
5天前
|
前端开发 JavaScript
JavaScript 获取 HTML 元素方法
JavaScript 获取 HTML 元素方法
9 0
|
5天前
|
JavaScript 前端开发
JavaScript中使用模板字符串拼接和使用字符串拼接有什么区别?
JavaScript中使用模板字符串拼接和使用字符串拼接有什么区别?
|
5天前
|
JavaScript 前端开发 安全
JavaScript实现跳转的方法
JavaScript实现跳转的方法
|
5天前
|
JavaScript 前端开发 索引
JavaScript数组相关的方法有哪些?
JavaScript数组相关的方法有哪些?

热门文章

最新文章