• 【总结】【空思想一】字符串或数组中重复字符及次数


    以下为“空思想一”,未完待续~~~(欢迎大家留言评论,诚恳与大家共同进步!)
    (若发现错误,拜托指正,本人重谢)
    null与undefined有很大的区别,知道就行。但是学习不仅在于知道,学以致用才算是自己的。本篇只为"空思想"之引入,以后会
    继续更新。敬请期待!有想法的,欢迎回复讨论。可在评论留言互动,可发邮箱(1412451704@qq.com)!
    <script>
    //【总结】字符串或数组中重复字符及次数
    //推荐方法:
    //正则方式:1,先把原字符串重复的字符放在一起;2,利用正则分开不重复的字符;3,按重复次数排序。
    //常规方法:(原理很重要,深化学习,锻炼思维)
    //重复处理:空对象接收,for-if-else。if分支判断不存在,用来导入并初始化(首次出现的值,空对象中不存在,满足条件即执行导入并初始化) ;else分支判断存在,用来累加(遍历后再次出现,就重复了,判断为存在,执行累加过程)。
        //审查结果:空变量存值,for-if。遍历找符合条件的(次数就初始化为0。可理解为,把条件初始化为最不符合条件的值,迭代变量,条件应该有最值),迭代一次,符合条件就修改一次变量值,再找就在判断,直至找到符合条件的就保存下来,迭代继续,以后不在符合条件,就不在修改。
        var str = 'aaabbbcccaaabbbaaabbbbbbbbbb';
    // 0123456
    var json = {};
    for (var i = 0; i < str.length; i++) {
    if(!json[str.charAt(i)]){//判断存在 首次i=0,json["a"]不存在,json["a"]=1;
    // if(json[str.charAt(i)]===undefined){//==不报错,但提示错,不合规范
    json[str.charAt(i)] = 1;
    }else{//i=6,json["a"]存在,json["a"]=1,1++=2,json["a"]=2;
    json[str.charAt(i)]++;
    }
    };
    var num = 0;//存最多次数 value
    var char = '';//存对应字符 key
    for(var key in json){//var key in json
    if(json[key]>num){
    num= json[key];
    char = key;
    }
    }
    alert('出现次数最多的是:'+char+',出现'+num+'次');
    // console.log(json);//{a: 9, s: 7, d: 1, f: 1}
    // console.log(json["a"]);//9
    console.log('出现次数最多的是:'+char+',出现'+num+'次');//9

    //推荐方法:
    //正则方式:1,先把原字符串重复的字符放在一起;2,利用正则分开不重复的字符;3,按重复次数排序
    var s =str;//s='aaabbbcccaaabbbaaabbbbbbbbbb';
    var a = s.split('');
    // console.log(a);//返回一个由s中单个字符组成的数组
    a.sort();
    s = a.join('');
    // console.log(s);//返回一个由数组a中字符按ASC排序后的字符串
    //实现将原字符串按ASC码排序,重复的在一起,重复的ASC码必相等
    var pattern = /(w)1*/g;//全局匹配相邻重复。必须全局匹配(没有g,匹配一次就结束)。
    var ans = s.match(pattern);
    console.log(ans);
    ans.sort(function(a, b) {//比较器看参数a-b的结果,为正升序,负就降序(不能加括号,传入sort中的是一个回调函数,
    将一个函数体作为参数传入另一个函数中反复使用;加括号表示传入的仅仅一个函数执行的返回值)
            return a.length < b.length;//长度降序
    // return b.length-a.length;//长度降序
    });
    console.log(ans);
    console.log(ans[0][0] + ': ' + ans[0].length);

    </script>
    【正在看本人博客的这位童鞋,我看你气度不凡,谈吐间隐隐有王者之气,日后必有一番作为!下面有个“顶”字,你就顺手把它点了吧!

    当然也可以“关注”和“收藏”,但我更希望大家能发表评论、互动交流。大家一起探讨学习,效率是不是会更高呢?(要先登录博客园账号哦 )】

  • 相关阅读:
    【作业3】应用分支与循环结构解决问题
    四、预习检查:填空,并注释"每空"填充的依据
    三、预习检查:选择正确答案,并简要说明为什么?
    作业 6 结构体
    实验 10 指针2 (2)为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:小写字母z变换成为a,其它字符变换成为该字符ASCII码顺序后1位的字符,比如o变换为p。
    实验 9 指针1 输入一行字符,要求用自定义的函数void f(char *line)统计和输出字符串中数字字符、英文字符和其他字符的个数
    作业 5 指针应用1
    实验9指针1
    实验 8 数组2 输出一张九九乘法口诀表。要求必须将乘积放入一个二维数组中,再输出该数组
    作业 4 函数应用 输出80到120之间的满足给定条件的所有整数,条件为构成该整数的每位数字都相同
  • 原文地址:https://www.cnblogs.com/ljt1412451704/p/8228155.html
Copyright © 2020-2023  润新知