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 相关文章推荐
jQuery 使用手册(四)
Sep 23 Javascript
jquery插件开发之实现google+圈子选择功能
Mar 10 Javascript
javascipt:filter过滤介绍及使用
Sep 10 Javascript
JavaScript实现网页加载进度条代码超简单
Sep 21 Javascript
jQuery实现从身份证号中获取出生日期和性别的方法分析
Feb 25 Javascript
利用vue实现模态框组件
Dec 19 Javascript
ejsExcel模板在Vue.js项目中的实际运用
Jan 27 Javascript
在小程序开发中使用npm的方法
Oct 17 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
Jan 08 Javascript
微信小程序前端promise封装代码实例
Aug 24 Javascript
vue中音频wavesurfer.js的使用方法
Feb 20 Vue.js
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 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 获取全局变量的代码
2011/04/21 PHP
逆序二维数组插入一元素的php代码
2012/06/08 PHP
利用PHP+JS实现搜索自动提示(实例)
2013/06/09 PHP
PHP实现GIF图片验证码
2015/11/04 PHP
javascript中比较字符串是否相等的方法
2013/07/23 Javascript
JS+CSS设置img在DIV中只显示Img垂直居中的部分
2013/10/24 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
javascript验证上传文件的类型限制必须为某些格式
2013/11/14 Javascript
js中回调函数的学习笔记
2014/07/31 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
jquery使整个div区域可以点击的方法
2015/06/24 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
js实现超酷的照片墙展示效果图附源码下载
2015/10/08 Javascript
漂亮实用的页面loading(加载)封装代码
2017/02/03 Javascript
利用Mongoose让JSON数据直接插入或更新到MongoDB
2017/05/03 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
json 带斜杠时如何解析的实现
2019/08/12 Javascript
video.js添加自定义组件的方法
2020/12/09 Javascript
[05:08]2014DOTA2国际邀请赛 Hao专访复仇的胜利很爽
2014/07/15 DOTA
python Django批量导入数据
2016/03/25 Python
PHP网页抓取之抓取百度贴吧邮箱数据代码分享
2016/04/13 Python
python中安装模块包版本冲突问题的解决
2017/05/02 Python
python中Switch/Case实现的示例代码
2017/11/09 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
澳大利亚头发和美容产品购物网站:OZ Hair & Beauty
2020/03/27 全球购物
营销与策划个人求职信
2013/09/22 职场文书
项目经理任命书内容
2014/06/06 职场文书
大学生党员个人总结
2015/02/13 职场文书
2015应届毕业生求职信范文
2015/03/20 职场文书
2015中学教学工作总结
2015/07/22 职场文书
退休欢送会致辞
2015/07/31 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
创业计划书之面包店
2019/09/17 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python