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_15_作用域分配与变量访问规则,再送个闭包
Oct 20 Javascript
jquery弹出框的用法示例(2)
Aug 26 Javascript
jquery中ajax使用error调试错误的方法
Feb 08 Javascript
JavaScript实现对下拉列表值进行排序的方法
Jul 15 Javascript
常见的javascript跨域通信方法
Dec 31 Javascript
js html css实现复选框全选与反选
Oct 09 Javascript
微信小程序实战之运维小项目
Jan 17 Javascript
详解vue.js的devtools安装
May 26 Javascript
微信小程序开发之好友列表字母列表跳转对应位置
Sep 26 Javascript
使用vue2.0创建的项目的步骤方法
Sep 25 Javascript
layui实现数据表格table分页功能(ajax异步)
Jul 27 Javascript
微信小程序 腾讯地图显示偏差问题解决
Jul 27 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
德生PL990,目前市面上唯一一款便携式插卡蓝牙全波段高性能收音机
2021/03/02 无线电
php数组的概述及分类与声明代码演示
2013/02/26 PHP
基于php的微信公众平台开发入门实例
2015/04/15 PHP
yii2中使用Active Record模式的方法
2016/01/09 PHP
ThinkPHP3.2框架操作Redis的方法分析
2019/05/05 PHP
js调用activeX获取u盘序列号的代码
2011/11/21 Javascript
杨氏矩阵查找的JS代码
2013/03/21 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
2013/11/07 Javascript
jQuery菜单插件superfish使用指南
2015/04/21 Javascript
跟我学习javascript的最新标准ES6
2015/11/20 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
vue开发心得和技巧分享
2016/10/27 Javascript
vue组件中点击按钮后修改输入框的状态实例代码
2017/04/14 Javascript
Angularjs中的验证input输入框只能输入数字和小数点的写法(推荐)
2017/08/16 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
AngularJS中controller控制器继承的使用方法
2017/11/03 Javascript
使用Sonarqube扫描Javascript代码的示例
2018/12/26 Javascript
微信小程序收藏功能的实现代码
2020/06/19 Javascript
[01:04:29]DOTA2-DPC中国联赛 正赛 Phoenix vs XG BO3 第二场 1月31日
2021/03/11 DOTA
python实现用户登录系统
2016/05/21 Python
利用python爬取散文网的文章实例教程
2017/06/18 Python
Python Nose框架编写测试用例方法
2017/10/26 Python
python计算列表内各元素的个数实例
2018/06/29 Python
关于python下cv.waitKey无响应的原因及解决方法
2019/01/10 Python
Django Channels 实现点对点实时聊天和消息推送功能
2019/07/17 Python
jupyter notebook 参数传递给shell命令行实例
2020/04/10 Python
Python如何安装第三方模块
2020/05/28 Python
keras实现theano和tensorflow训练的模型相互转换
2020/06/19 Python
Python暴力破解Mysql数据的示例
2020/11/09 Python
JavaScript获取当前url根目录(路径)
2014/02/19 面试题
初二学习计划书范文
2014/04/27 职场文书
关于保护环境的建议书
2014/08/26 职场文书
幼儿教师2014年度工作总结
2014/12/16 职场文书
表扬信范文
2019/04/22 职场文书
MySQL8.0.18配置多主一从
2021/06/21 MySQL
OpenCV 图像梯度的实现方法
2021/07/25 Python