查找字符串中出现最多的字符

HTML5学堂:正则、数组、字符串,是JavaScript语言中让人头痛的一些知识,今天这篇文章我们使用数组字符串的方法,来实现从一个字符串中,查找出现最多的字符。

查找字符串中出现最多的字符

将一个字符串中,出现次数最多的数字提取出来,最后输出出现最多的字符是什么,出现的次数是多少。

题目剖析

字符串方法的解题思路:从最初开始进行字符的截取,获取到第一个字符之后,根据这个字符进行字符串的拆分,此时,拆分后的数组中就没有这个字符了。再将数组组合成字符串之后,原来的长度与当前字符串的长度做差值,就能够获取到当前字符出现了几次。之后运用新的字符串,循环进行操作。需要注意的地方就是,对于出现次数相同的字符,也需要考虑。

相关知识点的使用:字符串、数组方面,需要使用到charAt、split、join、push方法;正则方面,需要使用到子项。

字符串方法 - 查找字符串中出现最多的字符

/*
* HTML5 数组字符串正则表达式
* HTML5学堂 http://www.h5course.com
* 独行冰海 梦幻雪冰
*/
function getMost(str){
    var maxNum = 0;
    var maxChar = [];    //存放出现字数最多的字符数组,因为出现最多的字符可能有多个
    while(str){
        var char = str.charAt(0);
        var arr = str.split(char);
        n = str.length - arr.join('').length;
        str = arr.join('');
        if(n > maxNum){
            maxNum = n;
            maxChar = [char];    // 放置数组元素
        }else if( n === maxNum){
            maxChar.push(char);    //出现次数相同的字符 存入数组里
        }
    }
    return {'maxNum':maxNum, 'maxChar':maxChar}
}
var res = getMost('dsfshkgfareasfd');
console.log('出现次数最多的字符:'+ res.maxChar + ',出现次数:' + res.maxNum);

正则方法 - 查找字符串中出现最多的字符

/*
* HTML5 数组字符串正则表达式
* HTML5学堂 http://www.h5course.com
* 独行冰海 梦幻雪冰
*/
var str = 'dsfshkgfareasfd';
var arr = str.split('');
arr = arr.sort();
str = arr.join('');
 
// 先进行排序处理,然后重新组装成字符串
var reg = /(\w)\1+/g;
var num = 0;
var value = null;
str.replace(reg, function($0, $1){
    if (num < $0.length) {
        num = $0.length;
        value = $1;
    };
});
console.log(value+'出现次数'+num);

原文发布于微信公众号 - HTML5学堂(h5course-com)

原文发表时间:2016-02-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏思考的代码世界

Python基础学习05天

1205
来自专栏Nian糕的私人厨房

C 数据类型&运算符

类型修饰符 变量名称 = 初始值 字符必须用单引号括起来,程序中的所有标点符号都必须是英文标点,每一条语句必须以分号结尾

925
来自专栏北京马哥教育

最全 Python3 函数知识点大全

23211
来自专栏张俊红

python数据分析学习笔记—python基础知识

python数据分析学习笔记系列——基础知识篇 总第44篇 ▼ ? 基本概念 1、数 在Python中有4种类型的数——整数、长整数、浮点数和复数。一般我们默认...

3155
来自专栏小灰灰

JDK容器学习之Queue: ArrayDeque

数组双端队列 ArrayDeque 双端队列,表示可以添加元素到(或删除,获取)队列头也可以添加元素到(或删除,获取)队列尾 ? 1. 底层数据结构 类中定义成...

1706
来自专栏aCloudDeveloper

右左法则解决复杂声明

Author:bakari       Date: 2012.8.27 现在很多IT公司的面试题都或多或少会有复杂声明的题,有一点C基础的人或许能够瞎搬乱套做对...

2058
来自专栏null的专栏

C/C++——排序

在C/C++中的排序,使用到的函数主要有: sort() qsort() 下面详细分析sort()函数和qsort()函数。 1、sort()函数 sort()...

3164
来自专栏desperate633

LeetCode Remove Linked List Elements

Remove all elements from a linked list of integers that have value val. Example...

381
来自专栏lzj_learn_note

4-字符串

字段宽度是转换后的值保留的最小字符个数,精度是数字转换结果中应该包含的小数位数或字符串转换后的值所能包含的最大字符个数。

483
来自专栏算法修养

pta 习题集 5-2 找出不是两个数组共有的元素 (5分)

给定两个整型数组,本题要求找出不是两者共有的元素。 输入格式: 输入分别在两行中给出两个整型数组,每行先给出正整数NN(≤20≤20),随后是NN个整数,...

37110

扫描关注云+社区