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 相关文章推荐
QUnit jQuery的TDD框架
Nov 04 Javascript
window.location.href IE下跳转失效的解决方法
Mar 27 Javascript
node.js中的fs.readlinkSync方法使用说明
Dec 17 Javascript
js小数运算出现多位小数如何解决
Oct 08 Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
Jun 08 Javascript
JQuery控制DIV的选取实现方法
Sep 18 Javascript
jQuery简单绑定单个事件的方法示例
Jun 10 jQuery
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
vue + element-ui实现简洁的导入导出功能
Dec 22 Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 Javascript
原生JS实现记忆翻牌游戏
Jul 31 Javascript
JS实现简单控制视频播放倍速的实例代码
Apr 18 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调用Webservice实例代码
2011/07/29 PHP
利用curl抓取远程页面内容的示例代码
2013/07/23 PHP
PHP中文编码小技巧
2014/12/25 PHP
php实现插入数组但不影响原有顺序的方法
2015/03/27 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
在WordPress中安装使用视频播放器插件Hana Flv Player
2016/01/04 PHP
php编程每天必学之验证码
2016/03/03 PHP
PHP容器类的两种实现方式示例
2019/07/24 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
JS案例分享之金额小写转大写
2014/05/15 Javascript
AngularJS身份验证的方法
2016/02/17 Javascript
AngularJS通过$sce输出html的方法
2016/09/22 Javascript
如何使用Bootstrap 按钮实例详解
2017/03/29 Javascript
canvas实现弧形可拖动进度条效果
2017/05/11 Javascript
elementUI table表格动态合并的示例代码
2019/05/15 Javascript
Js代码中的span拼接问题解决
2019/11/22 Javascript
vue用ant design中table表格,点击某行时触发的事件操作
2020/10/28 Javascript
echarts饼图各个板块之间的空隙如何实现
2020/12/01 Javascript
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
python 读取dicom文件,生成info.txt和raw文件的方法
2019/01/24 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
python 使用raw socket进行TCP SYN扫描实例
2020/05/05 Python
医药专业应届毕业生求职信范文
2014/01/01 职场文书
医学院校毕业生自荐信范文
2014/01/01 职场文书
运动会开幕式邀请函
2014/02/03 职场文书
党员对照检查材料思想汇报
2014/09/16 职场文书
小学生自我评价100字(15篇)
2014/09/18 职场文书
2014标准社保办理委托书
2014/10/06 职场文书
小学生安全教育心得体会
2016/01/15 职场文书
企业转让协议书(范文2篇)
2019/08/15 职场文书
《成长的天空》读后感3篇
2019/12/06 职场文书
详细总结Python常见的安全问题
2021/05/21 Python
MyBatis-Plus 批量插入数据的操作方法
2021/09/25 Java/Android
速龙x4-860k处理器相当于i几
2022/04/20 数码科技
Java Spring Lifecycle的使用
2022/05/06 Java/Android