zoukankan      html  css  js  c++  java
  • Weight for weight JavaScript趣题:减肥俱乐部

    Description:

    My friend John and I are members of the "Fat to Fit Club (FFC)". John is worried because each month a list with the weights of members is published and each month he is the last on the list which means he is the heaviest.

    I am the one who establishes the list so I told him: "Don't worry any more, I will modify the order of the list". It was decided to attribute a "weight" to numbers. The weight of a number will be from now on the sum of its digits.

    For example

    99 will have "weight" 18, 100 will have "weight" 1 so in the list 100 will come before 99. Given a string with the weights of FFC members in normal order can you give this string ordered by "weights" of these numbers?
    Example:

    "56 65 74 100 99 68 86 180 90" ordered by numbers weights becomes: "100 180 90 56 65 74 68 86 99"

    All numbers in the list are positive numbers and the list can be empty.

    console.log(orderWeight("56 65 74 100 99 68 86 180 90"));//100 180 90 56 65 74 68 86 99
    

    方法一

    function orderWeight(strng) {
        var arr=strng.split(' ');
        arr.sort(function(a,b){
          var num1=0;
          var num2=0;
          for(var i=0;i<a.length;i++){
            num1+=a[i]*1;  //把字符串转换成数字类型
          }
          for(var i=0;i<b.length;i++){
            num2+=b[i]*1;
          }
          return num1-num2||a.localeCompare(b);
        })
        return arr.join(' ')
    }
    

    方法二:使用 < key,value >键值对

    function orderWeight(strng) {
      return strng
        .split(" ")
        .map(function(v) {  
          return {
            val: v,
            key: v.split("").reduce(function(prev, curr) {
              return parseInt(prev) + parseInt(curr);
            }, 0)
          };
        })
        .sort(function(a, b) {
          return a.key == b.key 
            ? a.val.localeCompare(b.val)
            : (a.key - b.key);
        })
        .map(function(v) {
          return v.val;
        })
        .join(" ");
    }
    
  • 相关阅读:
    java中 Hex(十六进制)和byte[]相互转换
    byte[]和File相互转换
    Stringboot MultiPartFile 转 File
    mysql8.0+运行报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. 解决办法
    idea激活
    mysql8安装成功过后navicat连接失败
    AJAX的使用
    单文件上传和多文件上传实例
    监听器的使用
    SQL分页技术
  • 原文地址:https://www.cnblogs.com/kid2333/p/7471375.html
Copyright © 2011-2022 走看看