js面试之一个字符串中出现次数最多的字符是?出现几次?
最近在找面试题的时候发现了许多有趣的题目,在这里用随笔记录下~
关于“一个字符串中出现次数最多的字符...”这种问题在笔试题中出现的频率还是很高的,我自己也找到了几种方法处理
var str = "helloworld";
//1.将字符串打散为一个字符数组
var chars = str.split("");
//["h","e","l","l","o","w","o","r","l","d"]
//2.将打散的字符数组排序
chars.sort();
//["d","e","h","l","l","l","o","o","r","w"]
//3.将字符数组重新拼接成字符串
str = chars.join("");
//"dehllloorw"
//4.查找出字符串中紧挨的一组相同字母
var arr = str.match(/([a-z])\1*/g);
//["d","e","h","lll","oo","r","w"]
//5.按每组字母的个数降序排列
arr.sort(function(a,b){return b.length - a.length;});
//["lll","oo","d","e","h","r","w"]
var c = arr[0][0];
var n = arr[0].length;
console.log(`出现次数最多的是${c},共出现${n}次`);
作为一个程序员,可以说对注释真是又爱又恨了~~~当然,一种解决方法肯定是不能满足我的(#^.^#),下面是我想到的另一种解决方法。
var str = "helloworld";
//定义一个空关联数组
var arr = [];
//遍历字符串中每一个元素
for (var i=0;i<str.length;i++) {
//将key当做字符串数组的当前字母
var key = str[i];
//如果关联数组中没有下标为key的元素
if(arr[key]===undefined){
//给关联数组中添加下标为key的元素,初始值为1
arr[key] = 1;
}else{
//如果关联数组中存在下标为key的元素,则将初始值加1
arr[key]++;
}
}
var c,n;
//遍历关联数组
for (var key in arr) {
//首次比较,把第一个字母及其个数作为当前数组的最多字母和个数
if(c===undefined){
c = key;//字母
n = arr[key];//个数
}else {
//让后面每个字母的个数与当前字母个数最多的相比
if(arr[key]>n){//如果后面字母的个数比当前字母的个数多
c = key;//则把最多个数字母赋值给c
n = arr[key];//把最多字母的个数赋值给n
}
}
}
console.log(`出现次数最多的字母是${c},共出现${n}次`);
看到这里,难免想念叨一下关联数组和索引数组的差别:
笼统的说,索引数组就是下标为序数(就是0...什么的),关联数组就是下标为字符串...不知道这样理解对不对~不对请指出哈~
各位大神有什么其他方法不麻烦的话给小白的我学习学习下~(*❦ω❦)
js面试之一个字符串中出现次数最多的字符是?出现几次?的更多相关文章
- JS查找字符串中出现次数最多的字符
本文给大家带来两种js中查找字符串中出现次数最多的字符,在这两种方法中小编推荐使用第二种,对js查找字符串出现次数的相关知识感兴趣的朋友一起看看吧 在一个字符串中,如 'zhaochucichuz ...
- js判断一个字符串中出现次数最多的字符及次数
最近面试总是刷到这个题,然后第一次的话思路很乱,这个是我个人思路 for循环里两个 if 判断还可以优化 var maxLength = 0; var maxStr = ''; var count = ...
- 使用 Java 查找字符串中出现次数最多的字符以及出现的次数?
使用 Java 查找字符串中出现次数最多的字符以及出现的次数? import java.util.HashMap; import java.util.Map; public class TestStr ...
- Java求字符串中出现次数最多的字符
Java求字符串中出现次数最多的字符 [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51933611 Java ...
- JavaScript判断字符串中出现次数最多的字符,并统计其次数
要求: 输出一个给定字符串``中出现次数最多的字符,并统计其次数. 实现思路: 利用charA()遍历这个字符串 把每个字符都存储给对象,如果对象没有该属性,就先幅值为1,如果存在了就+1 遍历对象, ...
- JS-取出字符串中重复次数最多的字符并输出
/** 取出字符串中重复字数最多的字符 */ var words = 'sdfghjkfastgbyhnvdstyaujskgfdfhlaa'; //创建字符串 var word, //单个字符 le ...
- js常会问的问题:找出字符串中出现次数最多的字符。
一.循环obj let testStr = 'asdasddsfdsfadsfdghdadsdfdgdasd'; function getMax(str) { let obj = {}; for(le ...
- js 计算字符串中出现次数最多的字符及其次数
方法一: var str="sdfseresssssdssdfsa"; var arr=[]; var max=0; var maxk; for(var i=0;i<str. ...
- js学习笔记之字符串统计出现次数最多的字符
1.方法:把字符串中字符替换为空,并和之前的字符串的长度相减,得到已经被替换的字符的数量,依次比较获得出现次数最多的字符 var str ="adadfdfseffserfefsefseef ...
随机推荐
- Cass和ArcGIS交换
南方cass图形为CAD,把CAD图形转换成arcgis没有任何问题,到属性有问题,cass存放数据是放在CAD扩展XDATA中,和 arcgis导入导出CAD标准扩展属性不一样,只能二次开发使用,c ...
- 01_Quartz基础结构
[各种任务调度的使用场景] 论坛每天凌晨统计论坛用户的积分排名. 论坛每半个小时生成精华文章. 每隔30分钟对锁定过期的用户解锁. 每月1号统计上个月各部门的业务数据. [Quartz 简介] Qua ...
- 检查SQL Server 2005的索引密度和碎片信息(转)
查询数据库中所有表的索引密度和碎片信息,以便为索引的重建和整理提供依据,也可以参考DBCC SHOWCONTIG,通常FRAGMENTATIOIN在30%以上建议重建,否则建议整理 SELECT i. ...
- oracle_How to Recover Data (Without a Backup!)
How to Recover Data (Without a Backup!) It's the classic career-limiting maneuver(职业限制机动): accidenta ...
- 6.Zabbix 3.0 MySQL 监控
请查看我的有道云笔记: http://note.youdao.com/noteshare?id=94cd760a4848939d33892b7464cc0401&sub=8B6EDD27671 ...
- java 解压缩Zip文件 ziputil
package com.lanyuan.assembly.util; import java.io.BufferedOutputStream;import java.io.File;import ja ...
- sparkStreamming原理
一.Spark Streamming 是基于spark流式处理引擎,基本原理是将实时输入的数据以时间片(秒级)为单位进行拆分,然后经过spark引擎以类似批处理的方式处理每个时间片数据. 二.Spar ...
- 二分图最大权值匹配 KM算法 模板
KM算法详解+模板 大佬讲的太好了!!!太好了!!! 转载自:http://www.cnblogs.com/wenruo/p/5264235.html KM算法用来求二分图最大权完美匹配. 本文配合该 ...
- [18/12/01]super 关键字和final 关键字
一.super 关键字 1.super是直接父类对象的引用.可以通过super来访问父类中被子类覆盖的方法或属性. 使用super调用普通方法,语句没有位置限制,可以在子类中随便调用. 代码示例: c ...
- 实现新layer的时候易犯的错误
实现新layer后,如果我还是在原来的build文件夹里面make,好像是不会编译新的层的,所以跑程序会报没有你新添加的这个层.要么make clear重新make,要么就直接./build.sh,这 ...