js常会问的问题:找出字符串中出现次数最多的字符。

一、循环obj

let testStr = ‘asdasddsfdsfadsfdghdadsdfdgdasd‘;
        function getMax(str) {
            let obj = {};
            for(let i in str) {
                if(obj[str[i]]) {
                    obj[str[i]]++;
                }else{
                    obj[str[i]] = 1;
                }
            }
            let keys = Object.keys(obj); // 获取对象中所有key的值返回数组
            let values = Object.values(obj); // 获取所有value返回数组
            let maxVal = Math.max(...values);// Math.max可以找出传入参数的最大值,如:Math.max(1,2);这里可使用es6中的解构,        也可以使用Math.max.apply(Math,values)可认为是apply(Math.max, arr)        然后,arr是一个参数列表,对于max方法,其参数是若干个数,即Math.max(a, b, c, d, ...)
            console.log(keys[values.indexOf(maxVal)],maxVal);
        }
        getMax(testStr);

// obj值:{a: 5, s: 7, d: 12, f: 4, g: 2,  h: 1, s: 7,}
keys[values.indexOf(maxVal)] => value里面最大的数字的位置,最大数字位置对应的key。
maxVal最大的数,也就是出现做多的次数。
str[i]是对应字符串中的第i个字符,
obj[str[i]] 就是对应的每个字母for循环就是把里面出现了的字母作为obj这个对象的key,然后循环的时候判断obj里面有没有以str[i]为key的对象,如有,就把它的value加一,说明这个字母在obj中出现的次数多了一次;刚开始i是键名,str[i]是键值,用这个键值再做obj的键名,然后赋值,或累加

eg:
obj[str[i]] = 1;  =>  var obj={};obj.aa = 1;console.log(obj)
二、正则
let stringMax = (str) => {
            str = str.split(‘‘).sort().join(‘‘);
            var s = str.match(/(\w+)(\1)/g);
            if(s === null) {
                return str[0];
            }
            s = s.map(e => e=e+e[0]);
            var out = s.sort((a,b) =>b.length - a.length);
            console.log(out[0][0],out[0].length);
        };
        stringMax(testStr)
 
时间: 2024-12-30 04:30:18

js常会问的问题:找出字符串中出现次数最多的字符。的相关文章

找出字符串中出现次数最多的字符,和最大次数

/*找出字符串中出现次数最多的字符,和最大次数*/ function countMax(str){ var max = 0; // 记录出现的最大次数 var maxChar = ""; // 记录出现最多次数的字符 var counts = new Array(127); // 记录中间计算结果 for(var i = 0; i < counts.length; i++){ counts[i] = 0; } for(var i = 0; i < str.length; i

找出字符串中出现次数最多的字符,出现了几次都表示出来

var a="AAAAAAAAWelcomeToQianfng";        var arr=new Array(52);        for(var i=0;i<arr.length;i++){                        arr[i]=0;        }                                             //console.log(arr);//"0,0,0,0,0,0,0,0,0,0,0,0,0,0

给定n个正整数,找出它们中出现次数最多的数。如果这样的数有多个,请输出其中最小的一个。

ccf认证考试2013年12月第一题 问题描述 给定n个正整数,找出它们中出现次数最多的数.如果这样的数有多个,请输出其中最小的一个. 输入格式 输入的第一行只有一个正整数n(1 ≤ n ≤ 1000),表示数字的个数. 输入的第二行有n个整数s1, s2, -, sn (1 ≤ si ≤ 10000, 1 ≤ i ≤ n).相邻的数用空格分隔. 输出格式 输出这n个次数中出现次数最多的数.如果这样的数有多个,输出其中最小的一个. 样例输入 6 10 1 10 20 30 20 样例输出 10

js查找字符串中出现次数最多的字符

js查找字符创中出现次数最多的字符及次数 var str = 'Helloworldtomy'; 1 function max(str){ 2 var json={}; 3 for(var i=0;i<str.length;i++){ 4 var k=str[i]; // 获取到字符串中的每个字符 5 if(json[k]){ 6 json[k]++; //json里有这个字符时,把这个字符的数量+1, 7 } 8 else{ 9 json[k]=1; //否则把这个字符的数量设为1 10 }

【python cookbook】【数据结构与算法】12.找出序列中出现次数最多的元素

问题:找出一个元素序列中出现次数最多的元素是什么 解决方案:collections模块中的Counter类正是为此类问题所设计的.它的一个非常方便的most_common()方法直接告诉你答案. # Determine the most common words in a list words = [ 'look', 'into', 'my', 'eyes', 'look', 'into', 'my', 'eyes', 'the', 'eyes', 'the', 'eyes', 'the', '

js统计一段字符串中出现次数最多的字符

var str = 'ksfksjdfsfjlds;fjdssllllljjjjjsdsfdhhh'; // 将字符串转化为数组 var arr = str.split(''); // reduce传入的函数作为累加器,数组中的每个值从左到右依次缩减,直至计算到最后一个值 // 利用reduce的特性可以将数组中的每个元素以key/value的形式存入一个对象中,然后遍历对象找出value最大值 var obj = arr.reduce(function(pre,cur) { if (cur i

C# 找出数组中重复次数最多的数值

给定一个int数组,里面存在重复的数值,如何找到重复次数最多的数值呢? 这是在某社区上有人提出的问题,我想到的解决方法是分组. 1.先对数组中的所有元素进行分组,那么,重复的数值肯定会被放到一组中: 2.将分组进行排序,排序条件是分组中的元素个数: 3.元素数量最多的那个分组中的数值就是重复次数最多的. 基于以上思路,可以写出以下代码: // 示例数组,90重复4次,1重复2次,3重复3次 int[] arr = { 1, 1, 3, 3, 3, 7, 50, 15, 15, 90, 90, 9

获取字符串中出现次数最多的字符

var stringUtil = {}; stringUtil.getMaxLengthCharacter = function(s){ var info = {}, getObj, getMaxLength; //把字符和出现次数存放在对象中 getObj = (function(s){ var obj = {}; for(var i = 0, j = s.length; i < j; i++){ if(obj[s[i]]){ obj[s[i]] += 1; }else{ obj[s[i]]

JS中判断字符串中出现次数最多的字符及出现的次数

1 <script type="text/javascript"> 2 var str = 'qwertyuilo.,mnbvcsarrrrrrrrtyuiop;l,mhgfdqrtyuio;.cvxsrtyiuo'; 3 var json = {}; 4 //遍历str拆解其中的每一个字符将其某个字符的值及出现的个数拿出来作为json的kv 5 for (var i = 0; i < str.length; i++) { 6 //判断json中是否有当前str的值