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 相关文章推荐
基于Web标准的UI组件 — 树状菜单(2)
Sep 18 Javascript
学习ExtJS(二) Button常用方法
Oct 07 Javascript
jQuery数据显示插件整合实现代码
Oct 24 Javascript
jquery动画3.创建一个带遮罩效果的图片走廊
Aug 24 Javascript
页面图片浮动左右滑动效果的简单实现案例
Feb 10 Javascript
AngularJS入门教程之Helloworld示例
Dec 25 Javascript
AngularJS常见过滤器用法实例总结
Jul 06 Javascript
JS实现上传图片的三种方法并实现预览图片功能
Jul 14 Javascript
玩转vue的slot内容分发
Sep 22 Javascript
Angular4 Select选择改变事件的方法
Oct 09 Javascript
详解Vue 数据更新了但页面没有更新的 7 种情况汇总及延伸总结
May 28 Javascript
Node.js 深度调试方法解析
Jul 28 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
星际原理概述
2020/03/04 星际争霸
php中的ini配置原理详解
2014/10/14 PHP
php文件下载处理方法分析
2015/04/22 PHP
PHP判断字符串长度的两种方法很实用
2015/09/22 PHP
php array_merge_recursive 数组合并
2016/10/26 PHP
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
点弹代码 点击页面任何位置都可以弹出页面效果代码
2012/09/17 Javascript
JavaScript代码复用模式实例分析
2012/12/02 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
详细解读JavaScript编程中的Promise使用
2015/07/27 Javascript
JS控制文本域只读或可写属性的方法
2016/06/24 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
JS简单判断是否在微信浏览器打开的方法示例
2019/01/08 Javascript
python cookielib 登录人人网的实现代码
2012/12/19 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python 'takes exactly 1 argument (2 given)' Python error
2016/12/13 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
代码讲解Python对Windows服务进行监控
2018/02/11 Python
pyqt5 实现多窗口跳转的方法
2019/06/19 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
Python何时应该使用Lambda函数
2019/07/02 Python
详解django中Template语言
2020/02/22 Python
Python将字典转换为XML的方法
2020/08/01 Python
详解python tkinter 图片插入问题
2020/09/03 Python
python 对一幅灰度图像进行直方图均衡化
2020/10/27 Python
华丽的手绘陶瓷:MacKenzie-Childs
2017/02/04 全球购物
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
食品安全汇报材料
2014/08/18 职场文书
小学生感恩老师演讲稿
2014/08/28 职场文书
地方白酒代理协议书
2014/10/25 职场文书
小学生作文批改评语
2014/12/25 职场文书
详解Python类和对象内容
2021/06/22 Python
使用kubeadm命令行工具创建kubernetes集群
2022/03/31 Servers