zoukankan      html  css  js  c++  java
  • 找出字符串中出现次数最多的字符。

    一、循环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,}




    // 很牛的reduce方法

    var testStr = 'asdasddsfdsfadsfdghdadsdfdgdasd';
    var testArray = testStr.split('');
    var a = testArray.reduce(function(prev,next){
      if(next in prev) {
        prev[next]++;
      }else {
        prev[next] = 1;
      }
      return prev
    },{})
    console.log(a)

     
    复制代码
    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)
    复制代码
     
     
     
  • 相关阅读:
    2.5.4 使用popupWindow
    2.5.3 使用alertDialog创建自定义对话框
    2.5.2 使用alertdialog 创建列表对话框
    2.5.1 使用alertDialog
    2.4.12 画廊视图
    2.4.11 网格视图和图像切换器
    2.4.10 可展开的列表组件
    2.4.9 列表视图
    2.4.8 滚动视图
    2.4.7 选项卡的功能和用法
  • 原文地址:https://www.cnblogs.com/baixiaoxiao/p/10631031.html
Copyright © 2011-2022 走看看