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 相关文章推荐
ExtJS 简介 让你知道extjs是什么
Dec 29 Javascript
使用POST方式弹出窗口的两种方法示例介绍
Jan 29 Javascript
jquery 获取dom固定元素 添加样式的简单实例
Feb 04 Javascript
javascript的日期对象、数组对象、二维数组使用说明
Dec 22 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
Dec 26 Javascript
jQuery中andSelf()方法用法实例
Jan 08 Javascript
jQuery中animate用法实例分析
Mar 09 Javascript
js实现的黑背景灰色二级导航菜单效果代码
Aug 24 Javascript
基于javascript编写简单日历
May 02 Javascript
vue2.0实现导航菜单切换效果
May 08 Javascript
vue实现前台列表数据过滤搜索、分页效果
May 28 Javascript
vue中改变滚动条样式的方法
Mar 03 Javascript
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设计模式之解释器模式的深入解析
2013/06/13 PHP
ThinkPHP中关联查询实例
2014/12/02 PHP
PHP实现的浏览器检查类
2016/04/11 PHP
php实现微信公众平台发红包功能
2018/06/14 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
javascript禁制后退键(Backspace)实例代码
2013/11/15 Javascript
网页右下角弹出窗体实现代码
2014/06/05 Javascript
js利用prototype调用Array的slice方法示例
2014/06/09 Javascript
JavaScript实现网页对象拖放功能的方法
2015/04/15 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
JavaScript九九乘法口诀表的简单实现
2016/10/04 Javascript
jQuery自定义插件详解及实例代码
2016/12/29 Javascript
jQuery Datatables表头不对齐的解决办法
2017/11/27 jQuery
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
2019/07/13 Javascript
uni app仿微信顶部导航条功能
2019/09/17 Javascript
vue中beforeRouteLeave实现页面回退不刷新的示例代码
2019/11/01 Javascript
[01:13]这,就是刀塔
2014/07/16 DOTA
[01:07:34]DOTA2-DPC中国联赛定级赛 RNG vs Aster BO3第二场 1月9日
2021/03/11 DOTA
python分析作业提交情况
2017/11/22 Python
python实现Pyecharts实现动态地图(Map、Geo)
2020/03/25 Python
用HTML5实现鼠标滚轮事件放大缩小图片的功能
2015/06/25 HTML / CSS
澳大利亚领先的美容护肤品零售商之一:SkincareStore
2018/01/22 全球购物
红色连衣裙精品店:Red Dress Boutique
2018/08/11 全球购物
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
英文版网络工程师求职信
2013/10/28 职场文书
幼儿如何来做好自我评价
2013/11/05 职场文书
优秀志愿者事迹材料
2014/02/03 职场文书
社区党建工作方案
2014/06/10 职场文书
校园安全广播稿范文
2014/09/25 职场文书
初中毕业生自我评价
2015/03/02 职场文书
三方合作意向书范本
2015/05/09 职场文书
祝酒词范文
2015/08/12 职场文书
2016婚礼主持词开场白
2015/11/24 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
php双向队列实例讲解
2021/11/17 PHP
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android