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 相关文章推荐
JSQL 批量图片切换的实现代码
May 05 Javascript
JavaScript中关于indexOf的使用方法与问题小结
Aug 05 Javascript
js设置控件的隐藏与显示的两种方法
Aug 21 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
js判断价格,必须为数字且不能为负数的实现方法
Oct 07 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
Oct 14 Javascript
Angularjs2不同组件间的通信实例代码
May 06 Javascript
vue 实现类似淘宝星级评分的示例
Mar 01 Javascript
Node.js创建HTTP文件服务器的使用示例
May 11 Javascript
详解Vue内部怎样处理props选项的多种写法
Nov 06 Javascript
JavaScript forEach中return失效问题解决方案
Jun 01 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
Jul 30 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
网页游戏开发入门教程三(简单程序应用)
2009/11/02 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
php中json_encode处理gbk与gb2312中文乱码问题的解决方法
2014/07/10 PHP
php使用PDO从数据库表中读取数据的实现方法(必看)
2017/06/02 PHP
PHP实现的字符串匹配算法示例【sunday算法】
2017/12/19 PHP
javascript tips提示框组件实现代码
2010/11/19 Javascript
js实现禁止中文输入的方法
2015/01/14 Javascript
使用jQuery获得内容以及内容的属性
2015/02/26 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
js获取新浪天气接口的实现代码
2016/06/06 Javascript
JavaScript自定义函数实现查找两个字符串最长公共子串的方法
2016/11/24 Javascript
JSON字符串和JSON对象相互转化实例详解
2017/01/05 Javascript
微信小程序 弹窗自定义实例代码
2017/03/08 Javascript
详解Node.js中exports和module.exports的区别
2017/04/19 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
使用next.js开发网址缩短服务的方法
2020/06/17 Javascript
[46:58]完美世界DOTA2联赛PWL S3 Forest vs LBZS 第一场 12.17
2020/12/19 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
python编写分类决策树的代码
2017/12/21 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
解决Django 在ForeignKey中出现 non-nullable field错误的问题
2019/08/06 Python
python自动分箱,计算woe,iv的实例代码
2019/11/22 Python
Python通过socketserver处理多个链接
2020/03/18 Python
python输出国际象棋棋盘的实例分享
2020/11/26 Python
布局和排版教程 纯css3实现图片三角形排列
2014/10/17 HTML / CSS
美国马匹用品和骑马配件购物网站:Horse.com
2018/01/08 全球购物
利群广告词
2014/03/20 职场文书
2014年公司工作总结
2014/11/22 职场文书
银行优秀员工推荐信
2015/03/24 职场文书
2015年客服工作总结范文
2015/04/02 职场文书
刑事撤诉申请书
2015/05/18 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
2016大学先进团支部事迹材料
2016/03/01 职场文书
阿里云服务器部署mongodb的详细过程
2021/09/04 MongoDB