codewar上经典的一道题

题目描述

我的朋友约翰和我是“肥胖健身俱乐部(FFC)”的成员。约翰很担心,因为每个月都会公布一份成员权重的列表,每个月他都是列表中的最后一个,这意味着他是最重的。

我是那个建立名单的人所以我告诉他:“别担心,我会修改清单的顺序”。决定将“权重”归因于数字。从现在开始,数字的权重将是其数字的总和。

例如99将具有“重量” 18,100将具有“重量”, 1因此在列表中100将会出现99。如果给出一个正常顺序的FFC成员权重的字符串,你能否按照这些数字的“权重”给出这个字符串?

例:
"56 65 74 100 99 68 86 180 90" 按数字排序权重变为: "100 180 90 56 65 74 68 86 99"

当两个数字具有相同的“权重”时,让我们将它们分类为字符串而不是数字: 100之前180是因为它的“权重”(1)小于180(9)之一并且180之前是90因为它具有相同的权重“重量”(9),它之前是一个字符串。

列表中的所有数字都是正数,列表可以为空。

笔记
可能会发生输入字符串具有前导,尾随空格以及两个连续数字之间的唯一空格
不要修改输入
对于C:结果被释放。
算法数字

题目来源及自己的思路

codewar

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)
function orderWeight(strng) {
let arr=strng.split(' ')

arr=arr.map(ele =>ele.split(''))
var sum=array =>{
array.reduce((prev,next) =>{
return prev+next
},0)
}
let a=[]
arr.forEach(ele=>{
ele=ele.map(Number)
console.log(typeof ele[0])
a.push(ele)
})
arr=a
arr=arr.map((ele,index) =>{
if(index==arr.length-1) return;
console.log(arr[index]+' '+arr[index+1])
if(sum(arr[index])>sum(arr[index+1])){
let a=[]
a=arr[index+1]
arr[index+1]=arr[index]
arr[index]=a

}else if(sum(arr[index])==sum(arr[index+1])){
if(arrindex>arrindex+1){
let a=[]
a=arr[index+1]
arr[index+1]=arr[index]
arr[index]=a
}
}
})
return arr;
}

你期待的结果是什么?实际看到的错误信息又是什么?

var str="2000 11 123 4444 99" console.log(orderWeight(str))
图片描述

顺便想问一下 当两者的权重相等时是怎么排序的?

阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题