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小技巧
Mar 01 Javascript
JQuery优缺点分析说明
Jun 09 Javascript
jquery中通过父级查找进行定位示例
Jun 28 Javascript
详解JavaScript的Date对象(制作简易钟表)
Apr 07 Javascript
angular.js分页代码的实例
Jul 27 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
Jun 27 Javascript
详解Node使用Puppeteer完成一次复杂的爬虫
Apr 18 Javascript
关于Vue在ie10下空白页的debug小结
May 02 Javascript
Vue封装的组件全局注册并引用
Jul 24 Javascript
单线程JavaScript实现异步过程详解
May 19 Javascript
微信小程序实现文件预览
Oct 22 Javascript
微信小程序实现底部弹出框
Nov 18 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之第十天
2006/10/09 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
JavaScript的目的分析
2007/01/05 Javascript
Javascript 面向对象 重载
2010/05/13 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
jQuery遍历json的方法(推荐)
2016/06/12 Javascript
JS判断来路是否是百度等搜索索引进行弹窗或自动跳转的实现代码
2016/10/09 Javascript
KnockoutJS 3.X API 第四章之数据控制流with绑定
2016/10/10 Javascript
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
VUE 3D轮播图封装实现方法
2018/07/03 Javascript
Vue 第三方字体图标引入 Font Awesome的方法
2018/09/28 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
分享8个JavaScript库可更好地处理本地存储
2020/10/12 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
python函数形参用法实例分析
2015/08/04 Python
python list排序的两种方法及实例讲解
2017/03/20 Python
Python中sort和sorted函数代码解析
2018/01/25 Python
python 字典 按key值大小 倒序取值的实例
2018/07/06 Python
使用turtle绘制五角星、分形树
2019/10/06 Python
python装饰器代替set get方法实例
2019/12/19 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
Html5移动端网页端适配(js+rem)
2021/02/03 HTML / CSS
Opodo英国旅游网站:预订廉价航班、酒店和汽车租赁
2018/07/14 全球购物
美国波西米亚风格精品店:South Moon Under
2019/10/26 全球购物
酒吧员工的岗位职责
2013/11/26 职场文书
女大学生自我鉴定
2013/12/09 职场文书
安全施工标语
2014/06/07 职场文书
培训班通知
2015/04/25 职场文书
2015年工程师工作总结
2015/04/30 职场文书
春节慰问简报
2015/07/21 职场文书
解决Nginx 配置 proxy_pass 后 返回404问题
2021/03/31 Servers
Java org.w3c.dom.Document 类方法引用报错
2021/08/07 Java/Android
python区块链实现简版工作量证明
2022/05/25 Python