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 相关文章推荐
javascript中substr,substring,slice.splice的区别说明
Nov 25 Javascript
jquery蒙版控件实现代码
Dec 08 Javascript
jquery win 7透明弹出层效果的简单代码
Aug 06 Javascript
jquery ajax post提交数据乱码
Nov 05 Javascript
2014年最火的Node.JS后端框架推荐
Oct 27 Javascript
javascript实现类似超链接的效果
Dec 26 Javascript
Bootstrap3 Grid system原理及应用详解
Sep 30 Javascript
Jquery循环截取字符串的方法(多出的字符串处理成&quot;...&quot;)
Nov 28 Javascript
Vue2.0基于vue-cli+webpack Vuex的用法(实例讲解)
Sep 15 Javascript
vue项目中使用ueditor的实例讲解
Mar 05 Javascript
vue ssr服务端渲染(小白解惑)
Nov 10 Javascript
Vue中引入svg图标的两种方式
Jan 14 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最简单的删除目录与文件实现方法
2014/11/28 PHP
Yii分页用法实例详解
2014/12/04 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
php7连接MySQL实现简易查询程序的方法
2020/10/13 PHP
ExtJS Window 最小化的一种方法
2009/11/18 Javascript
javascript replace()正则替换实现代码
2010/02/26 Javascript
基于jQuery的弹出框插件
2012/03/18 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
jQuery 弹出层插件(推荐)
2016/05/24 Javascript
JavaScript检测原始值、引用值、属性
2016/06/20 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
微信小程序 navbar实例详解
2017/05/11 Javascript
分享ES6的7个实用技巧
2018/01/18 Javascript
Vue组件开发技巧总结
2018/03/04 Javascript
p5.js入门教程和基本形状绘制
2018/03/15 Javascript
详解Vue.js使用Swiper.js在iOS
2018/09/10 Javascript
JavaScript寄生组合式继承原理与用法分析
2019/01/11 Javascript
详解auto-vue-file:一个自动创建vue组件的包
2019/04/26 Javascript
layui实现数据表格隐藏列的示例
2019/10/25 Javascript
[56:18]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第二局
2016/03/05 DOTA
Python3匿名函数用法示例
2018/07/25 Python
对pandas数据判断是否为NaN值的方法详解
2018/11/06 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
python读取目录下所有的jpg文件,并显示第一张图片的示例
2019/06/13 Python
python 实现保存最新的三份文件,其余的都删掉
2019/12/22 Python
Python while循环使用else语句代码实例
2020/02/07 Python
flask开启多线程的具体方法
2020/08/02 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
GAP阿联酋官网:GAP UAE
2017/11/30 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
美国地毯购买网站:Rugs USA
2019/02/23 全球购物
自主招生自荐信范文
2013/12/04 职场文书
三八红旗手先进事迹材料
2014/05/13 职场文书
2014年秋季新学期寄语
2014/08/02 职场文书
社区干部培训心得体会
2016/01/06 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python