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 相关文章推荐
prototype 1.5相关知识及他人笔记
Dec 16 Javascript
javascript 45种缓动效果 非常酷
Jun 28 Javascript
同时使用n个window onload加载实例介绍
Apr 25 Javascript
动态的创建一个元素createElement及删除一个元素
Jan 24 Javascript
jQuery实现倒计时按钮功能代码分享
Sep 03 Javascript
Js可拖拽放大的层拖动特效实现方法
Feb 25 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
Mar 02 Javascript
学习JavaScript设计模式之单例模式
Jan 19 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
如何提升vue.js中大型数据的性能
Jun 21 Javascript
小程序实现悬浮搜索框
Jul 12 Javascript
vue+springboot图片上传和显示的示例代码
Feb 14 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网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
PHP生成数组再传给js的方法
2014/08/07 PHP
Symfony2实现在doctrine中内置数据的方法
2016/02/05 PHP
php数据结构之顺序链表与链式线性表示例
2018/01/22 PHP
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
JS代码防止SQL注入的方法(超简单)
2016/04/12 Javascript
jQuery延迟执行的实现方法
2016/12/21 Javascript
ES6中Array.find()和findIndex()函数的用法详解
2017/09/16 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
webpack公共组件引用路径简化小技巧
2018/06/15 Javascript
vue项目中添加单元测试的方法
2018/07/21 Javascript
koa-router源码学习小结
2018/09/07 Javascript
Python设计模式之单例模式实例
2014/04/26 Python
Linux下使用python自动修改本机网关代码分享
2015/05/21 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
2016/06/27 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
python实现决策树分类(2)
2018/08/30 Python
python2 与 pyhton3的输入语句写法小结
2018/09/10 Python
Python unittest 简单实现参数化的方法
2018/11/30 Python
使用Python实现企业微信的自动打卡功能
2019/04/30 Python
python 命令行传入参数实现解析
2019/08/30 Python
使用Python和OpenCV检测图像中的物体并将物体裁剪下来
2019/10/30 Python
Python中类似于jquery的pyquery库用法分析
2019/12/02 Python
TensorFlow实现打印每一层的输出
2020/01/21 Python
HTML5 和小程序实现拍照图片旋转、压缩和上传功能
2018/10/08 HTML / CSS
当x.equals(y)等于true时,x.hashCode()与y.hashCode()可以不相等,这句话对不对
2015/05/02 面试题
副主任竞聘演讲稿
2014/08/18 职场文书
五五普法心得体会
2014/09/04 职场文书
党的群众路线教育实践活动心得体会(医院)
2014/11/03 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
晚会闭幕词
2015/01/28 职场文书
步步惊心观后感
2015/06/12 职场文书
关于党风廉政建设宣传教育月的活动总结!
2019/08/08 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
python中如何对多变量连续赋值
2021/06/03 Python