用Ruby语言对数字排序
用Ruby语言对数字排序 原题地址在 codewars
这是一道简单的入门级题目,对给出的数字进行排序返回,比如
Input: 145263 Output: 654321
Input: 1254859723 Output: 9875543221
以前用的javascript解决的 如下
function descendingOrder(n){
return +((n+"").split("").sort((a,b)=>{return b-a}).join(""))
}
将数字转换为字符串,再用split()拆分为数组,然后排序,重新用join组装为数字,一气呵成。
今天尝试使用Ruby解决这个问题,我是Ruby的初学者,好在这道题考察的是语言的基础,而Ruby和Javascript都是动态性语言,很多方法都是同名的。
def descending_order(n)
n.to_s.split("").sort{|a,b| b<=>a}.join("").to_i
end
p descending_order(123)
我的思路基本与javascript的一致
看了下别人的答案,如下
def descending_order(n)
n.to_s.chars.sort.reverse.join.to_i
end
查了下文档 chars方法就是将字符串每个字节转为数组键值
Returns an array of characters in str. This is a shorthand for str.each_char.to_a.
Written on August 18, 2015