• 根据字符串字符的个数排序输出


    题目描述

    如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

    实现以下接口:
        输入一个字符串,对字符中的各个英文字符,数字,空格进行统计(可反复调用)
        按照统计个数由多到少输出统计结果,如果统计的个数相同,则按照ASII码由小到大排序输出
        清空目前的统计结果,重新统计
    调用者会保证:
    输入的字符串以‘’结尾。

    输入描述:

    输入一串字符。

    输出描述:

    对字符中的
    各个英文字符(大小写分开统计),数字,空格进行统计,并按照统计个数由多到少输出,如果统计的个数相同,则按照ASII码由小到大排序输出 。如果有其他字符,则对这些字符不用进行统计。

    解题思路

    (1)创建新对象,遍历字符串,将字符串的字符作为对象的属性值,并且将字符作为字符对象,赋予value和count属性

    (2)将对象转化为字符对象数组,调用数组的sort方法进行排序,首先排序依据count值,当count值相同时依据value值的ascii码

    (3)将排好序的字符对象数组的value值拼接成字符串输出。

    //利用对象的属性和比较来做的
    function charCnt(str){
        var obj = {};
        //创建字符对象
        for(var i=0 ; i<str.length; i++){
            var char = str.charAt(i);
            if(obj[char] && obj[char].value == char){
                ++obj[char].count;
            }else{
                obj[char] = {};
                obj[char].value = char;
                obj[char].count = 1;
            }
        }
        // console.log(obj);
        // 转化为字符对象数组
        var arr = [];
        for(var k in obj){
            arr.push(obj[k]);
        }
        
        //属性值比较,先比较字符次数,次数相同比较ASCII码
        var arr2 = arr.sort(function(obj1,obj2){
            if(obj1.count < obj2.count){
                return 1;
            }else if(obj1.count > obj2.count){
                return -1;
            }else{
                return (obj1.value).charCodeAt() - (obj2.value).charCodeAt();
            }
        });
        var result = '';
        for(var j=0; j<arr2.length; j++){
            result += arr2[j].value;
        }
        return result;
    }
    console.log(charCnt('8v26ktzk069lm400061m0v965we88850o6omqi532ktir6esb55t0kqm026y8rk63aj82kcx48gd1tiylvs0xo32zem65q7z5ce2185d2ascz62a2p3ajr45h637t2p290lc043gicp5ldzzmx2'));  //206583kmzct4aeil19dopqrsvx7gjybhw

    链接:https://www.nowcoder.com/questionTerminal/c1f9561de1e240099bdb904765da9ad0
    来源:牛客网

  • 相关阅读:
    python中range函数与列表中删除元素
    python碎片记录(一)
    Coursera在线学习---第八节.K-means聚类算法与主成分分析(PCA)
    Coursera在线学习---第七节.支持向量机(SVM)
    Coursera在线学习---第六节.构建机器学习系统
    Coursera在线学习---第五节.Logistic Regression
    梯度下降法与迭代结束条件
    利用并查集求最大生成树和最小生成树(nlogn)
    字符串二分查找
    map容器
  • 原文地址:https://www.cnblogs.com/guorange/p/7453151.html
Copyright © 2020-2023  润新知