题目描述
我的朋友约翰和我是“肥胖健身俱乐部(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))
顺便想问一下 当两者的权重相等时是怎么排序的?