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 ui(接口)介绍
Sep 17 Javascript
JQuery Study Notes 学习笔记(一)
Aug 04 Javascript
js 上下左右键控制焦点(示例代码)
Dec 14 Javascript
解决window.opener=null;window.close(),只支持IE6不支持IE7,IE8的问题
Jan 14 Javascript
jQuery中next()方法用法实例
Jan 07 Javascript
EasyUI中实现form表单提交的示例分享
Mar 01 Javascript
Jquery-data的三种用法
Apr 18 jQuery
React-router v4 路由配置方法小结
Aug 08 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
Jul 13 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
Sep 13 Javascript
JavaScript数据结构与算法之基本排序算法定义与效率比较【冒泡、选择、插入排序】
Feb 21 Javascript
JS实现点餐自动选择框(案例分析)
Dec 10 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网站在线人数统计
2008/04/09 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
[原创]php逐行读取txt文件写入数组的方法
2015/07/02 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
Yii2结合Workerman的websocket示例详解
2018/09/10 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
goto语法在PHP中的使用教程
2020/09/17 PHP
深入理解JavaScript系列(33):设计模式之策略模式详解
2015/03/03 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
JavaScript实现图片轮播的方法
2015/07/31 Javascript
jQuery实现的网页右下角tab样式在线客服效果代码
2015/10/23 Javascript
JS加载器如何动态加载外部js文件
2016/05/26 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
2016/08/05 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
2016/12/26 Javascript
javascript回调函数详解
2018/02/06 Javascript
angularjs 获取默认选中的单选按钮的value方法
2018/02/28 Javascript
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
js指定日期增加指定月份的实现方法
2018/12/19 Javascript
[40:10]2015国际邀请赛全明星表演赛
2015/08/07 DOTA
Python二分查找详解
2015/09/13 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
python实现事件驱动
2018/11/21 Python
python Django框架实现web端分页呈现数据
2019/10/31 Python
python将时分秒转换成秒的实例
2019/12/07 Python
python等差数列求和公式前 100 项的和实例
2020/02/25 Python
深入浅析css3 border-image边框图像详解
2015/11/24 HTML / CSS
css3使用animation属性实现炫酷效果(推荐)
2020/02/04 HTML / CSS
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
Kathmandu新西兰官网:新西兰户外运动品牌
2019/07/27 全球购物
什么是URL
2015/12/13 面试题
用Python写一个for循环的例子
2016/07/19 面试题
后勤人员自我评价怎么写
2013/09/19 职场文书
党风廉政承诺书
2014/03/27 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
行为规范主题班会
2015/08/13 职场文书
2019年励志签名:致拼搏路上的自己
2019/10/11 职场文书