Js查找字符串中出现次数最多的字符及个数实例解析


Posted in Javascript onSeptember 05, 2016

如sssfgtdfssddfsssfssss,出现最多的字符是s,出现了12次

传统写法

分析:

1.准备一个空的json,通过循环字符串的每个字符来看,如果json里没有这个字符,就在json里创建一个新的数组,并把这个字符放进数组里,如果json里有这个字符,继续把字符添加进数组里,这时循环完json里有n个数组

2.找出json里长度最长的数组,此时长度即个数,而最多的字符就是这个参数,用到for...in...循环和参数attr

var str="sssfgtdfssddfsssfssss";
function max(){
var json={};
var num=0;
var value=null;
for(var i=0;i<str.length;i++){
var k=str[i];
if(!json[k]){
json[k]=[];
}
json[k].push(k); //这里不需要else,否则只有存在这个字符时才添加。次数会少一次
}
for(var attr in json){
if(num<json[attr].length){
num=json[attr].length;
value=json[attr][0];
}
}
alert("出现最多的字符是:"+value+',出现次数是:'+num);
};
max(str);

如果不想往json里放东西怎么做呢?

分析:

1.准备一个空的json,通过循环字符串的每个字符来看,如果json里没有这个字符,就把这个字符的数目设为1,如果有则数目++

2.循环json里的字符,只要存在,就把他的数目赋给一个变量,并且每次都比较新的字符数量和这个变量的大小,如果比变量大,则更新变量的值,最后这个变量的值就是最多字符的数目

而最多的字符就是json里这个字符

var str="sssfgtdfssddfsssfssss";
function max(){
var json={};
for(var i=0;i<str.length;i++){
var k=str[i]; //k是所有字符,字符串也跟数组一样可以通过中括号下标方法取到每个子元素
if(json[k]){
json[k]++; //json里有这个字符时,把这个字符的数量+1,
}
else{
json[k]=1; //否则把这个字符的数量设为1
}
}
var num=0;
var value=null;
for(var k in json){ //s、f、g、t、d
if(json[k]>num){
num=json[k];
value=k;
}
}
alert("出现最多的字符是:"+value+',出现次数是:'+num);
};
max(str);

正则的方法

分析:

1.字符串转为数组进行排序,以便正则选出相同的挨在一起的字符

2.通过正则replace()方法的两个参数,来匹配出现最多的字符和数量

var str="sssfgtdfssddfsssfssss";
var num=0;
var value=null;
function max(){
var new_str=str.split("").sort().join("");
var re=/(\w)\1+/g; //没有\1,re就是一整个排好序的字符串,有了\1就是出现过的有重复的取出来,\1表示跟前面第一个子项是相同的
new_str.replace(re,function($0,$1){ //$0代表取出来重复的一个个整体,如[s,s...],[f,f..],[d,d....] $1代表这个整体里的字符
if(num<$0.length){
num=$0.length;
value=$1
}
});
alert(value+":"+num)
};
max(str);
Javascript 相关文章推荐
jQuery UI 应用不同Theme的办法
Sep 12 Javascript
jquery 实现表单验证功能代码(简洁)
Jul 03 Javascript
javascript自定义startWith()和endWith()的两种方法
Nov 11 Javascript
常常会用到的截取字符串substr()、substring()、slice()方法详解
Dec 16 Javascript
Web Uploader文件上传插件使用详解
May 10 Javascript
jQuery+CSS实现简单切换菜单示例
Jul 27 Javascript
简化vuex的状态管理方案的方法
Jun 02 Javascript
JavaScript设计模式之原型模式分析【ES5与ES6】
Jul 26 Javascript
基于vue实现移动端圆形旋钮插件效果
Nov 28 Javascript
微信小程序实现授权登录
May 15 Javascript
JS pushlet XMLAdapter适配器用法案例解析
Oct 16 Javascript
vue里使用create, mounted调用方法
Apr 26 Vue.js
JS查找字符串中出现次数最多的字符
Sep 05 #Javascript
node网页分段渲染详解
Sep 05 #Javascript
js对象浅拷贝和深拷贝详解
Sep 05 #Javascript
JS实现隐藏同级元素后只显示JS文件内容的方法
Sep 04 #Javascript
jQuery实现智能判断固定导航条或侧边栏的方法
Sep 04 #Javascript
angularjs实现文字上下无缝滚动特效代码
Sep 04 #Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
Sep 04 #Javascript
You might like
PHP与MySQL开发中页面乱码的产生与解决
2008/03/27 PHP
PHP写的加密函数,支持私人密钥(详细介绍)
2013/06/09 PHP
php+jQuery+Ajax实现点赞效果的方法(附源码下载)
2020/07/21 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
JavaScript的面向对象(一)
2006/11/09 Javascript
YUI模块开发原理详解
2013/11/18 Javascript
JQuery中extend使用介绍
2014/03/13 Javascript
js实现仿Windows风格选项卡和按钮效果实例
2015/05/13 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
使用JavaScript判断手机浏览器是横屏还是竖屏问题
2016/08/02 Javascript
微信小程序 条件渲染详解
2016/10/09 Javascript
node.js基于fs模块对系统文件及目录进行读写操作的方法详解
2017/11/10 Javascript
jQuery实现导航样式布局操作示例【可自定义样式布局】
2018/07/24 jQuery
Vue使用轮询定时发送请求代码
2020/08/10 Javascript
[48:56]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 VG vs KG
2018/03/31 DOTA
pycharm 使用心得(一)安装和首次使用
2014/06/05 Python
使用Python3制作TCP端口扫描器
2017/04/17 Python
小白如何入门Python? 制作一个网站为例
2018/03/06 Python
python使用turtle库绘制时钟
2020/03/25 Python
Pytoch之torchvision.transforms图像变换实例
2019/12/30 Python
Docker部署Python爬虫项目的方法步骤
2020/01/19 Python
将labelme格式数据转化为标准的coco数据集格式方式
2020/02/17 Python
python实现canny边缘检测
2020/09/14 Python
python 进程池pool使用详解
2020/10/15 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
函授教育个人学习的自我评价
2013/12/31 职场文书
高中竞选班长演讲稿
2014/04/24 职场文书
竞聘演讲稿精彩开头和结尾
2014/05/14 职场文书
政治学专业毕业生求职信
2014/08/11 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
倡议书范文大全
2015/04/28 职场文书
中秋节随笔
2015/08/15 职场文书
初三语文教学反思
2016/03/03 职场文书
详解TypeScript的基础类型
2022/02/18 Javascript
深入理解mysql事务隔离级别和存储引擎
2022/04/12 MySQL