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 AJAX回调函数this指向问题
Feb 08 Javascript
基于mootools 1.3框架下的图片滑动效果代码
Apr 22 Javascript
JavaScript学习笔记记录我的旅程
May 23 Javascript
html超链接打开窗口大小的方法
Mar 05 Javascript
node.js入门教程迷你书、node.js入门web应用开发完全示例
Apr 06 Javascript
js实现select二级联动下拉菜单
Apr 17 Javascript
jQuery文字横向滚动效果的实现代码
May 31 Javascript
详解基于Node.js的微信JS-SDK后端接口实现代码
Jul 15 Javascript
JS二级菜单不同实现方法分析【4种方法】
Dec 21 Javascript
利用es6 new.target来对模拟抽象类的方法
May 10 Javascript
jQuery 添加元素和删除元素的方法
Jul 15 jQuery
JavaScript实现浏览器网页自动滚动并点击的示例代码
Dec 05 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
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
PHP根据session与cookie用户登录状态操作类的代码
2016/05/13 PHP
php 在字符串指定位置插入新字符的简单实现
2016/06/28 PHP
php中namespace及use用法分析
2016/12/06 PHP
基于php数组中的索引数组和关联数组详解
2018/03/12 PHP
js禁止页面使用右键(简单示例代码)
2013/11/13 Javascript
js采用map取到id集合组并且实现点击一行选中一行
2013/12/16 Javascript
JS实现往下不断流动网页背景的方法
2015/02/27 Javascript
jQuery插件imgPreviewQs实现上传图片预览
2016/01/15 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
详解JavaScript中|单竖杠运算符的使用方法
2016/05/23 Javascript
AngularJS基础 ng-class-odd 指令示例
2016/08/01 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
关于Angular2 + node接口调试的解决方案
2017/05/28 Javascript
微信小程序Redux绑定实例详解
2017/06/07 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
JS实现字符串去重及数组去重的方法示例
2018/04/21 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
vue动画效果实现方法示例
2019/03/18 Javascript
CKEditor 4.4.1 添加代码高亮显示插件功能教程【使用官方推荐Code Snippet插件】
2019/06/14 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
Vue修改项目启动端口号方法
2019/11/07 Javascript
js面向对象之实现淘宝放大镜
2020/01/15 Javascript
python实现感知器算法详解
2017/12/19 Python
对json字符串与python字符串的不同之处详解
2018/12/19 Python
关于Python形参打包与解包小技巧分享
2019/08/24 Python
python中有函数重载吗
2020/05/28 Python
如何让PyQt5中QWebEngineView与JavaScript交互
2020/10/21 Python
Python 远程开关机的方法
2020/11/18 Python
Kneipp克奈圃美国官网:德国百年精油配方的传承
2018/02/07 全球购物
会计专业自荐信
2013/12/02 职场文书
求职自荐信格式
2013/12/04 职场文书
社区务虚会发言材料
2014/10/20 职场文书
2016年班主任新年寄语
2015/08/18 职场文书