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 相关文章推荐
js下将字符串当函数执行的方法
Jul 13 Javascript
非常强大的 jQuery.AsyncBox 弹出对话框插件
Aug 29 Javascript
js获取或设置当前窗口url参数的小例子
Oct 14 Javascript
jQuery固定元素插件scrolltofixed使用指南
Apr 21 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
Sep 26 Javascript
javascript加载xml 并解析各节点的值(实现方法)
Oct 12 Javascript
基于JS实现移动端向左滑动出现删除按钮功能
Feb 22 Javascript
node操作mysql数据库实例详解
Mar 17 Javascript
Node.js创建HTTP文件服务器的使用示例
May 11 Javascript
小程序视频列表中视频的播放与停止的示例代码
Jul 20 Javascript
Electron + vue 打包桌面操作流程详解
Jun 24 Javascript
深入学习Vue nextTick的用法及原理
Oct 08 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对数组排序代码分享
2014/02/24 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
phalcon model在插入或更新时会自动验证非空字段的解决办法
2016/12/29 PHP
PHP中“=&gt;
2019/03/01 PHP
JavaScript学习笔记之获取当前目录的实现代码
2010/12/14 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
在javascript中对于DOM的加强
2013/04/11 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
将数字转换成大写的人民币表达式的js函数
2014/09/21 Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
2014/11/02 Javascript
JS+CSS实现自动切换的网页滑动门菜单效果代码
2015/09/14 Javascript
浅析jQuery Mobile的初始化事件
2015/12/03 Javascript
jQuery实现点击后高亮背景固定显示的菜单效果【附demo源码下载】
2016/09/21 Javascript
node.js中的事件处理机制详解
2016/11/26 Javascript
详解js的事件代理(委托)
2016/12/22 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
原生JS实现的轮播图功能详解
2018/08/06 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
js实现图片上传即时显示效果
2019/09/30 Javascript
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
详解Python_shutil模块
2019/03/15 Python
三个python爬虫项目实例代码
2019/12/28 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
Python 给下载文件显示进度条和下载时间的实现
2020/04/02 Python
jupyter notebook参数化运行python方式
2020/04/10 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
彻底解决Python包下载慢问题
2020/11/15 Python
春节活动策划方案
2014/01/24 职场文书
楼面经理岗位职责范本
2014/02/18 职场文书
大学生两会学习心得体会
2014/03/10 职场文书
项目经理任命书
2014/06/04 职场文书
幼儿园中秋节活动总结
2015/03/23 职场文书
城南旧事读书笔记
2015/06/29 职场文书
解析目标检测之IoU
2021/06/26 Python