【发布时间】:2019-01-19 14:44:21
【问题描述】:
一个整齐的数字是一个数字按非递减顺序排列的数字,例如1234. 这是一种查找用 Ruby 编写的整齐数字的方法:
def tidy_number(n)
n.to_s.chars.sort.join.to_i == n
end
p tidy_number(12345678) # true
p tidy_number(12345878) # false
我尝试在 Scala 中编写相同的东西,结果如下:
object MyClass {
def tidy_number(n:Int) = n.toString.toList.sorted.mkString.toInt == n;
def main(args: Array[String]) {
println(tidy_number(12345678)) // true
println(tidy_number(12345878)) // false
}
}
我可以在 Scala 中做到这一点的唯一方法是将整数转换为字符串到列表,然后对列表进行排序并再次返回。我的问题:有没有更好的方法?从某种意义上说,“更好”的转化次数更少。我主要是在寻找一个简洁的 Scala,但如果有人指出在 Ruby 中更简洁的方法,我将不胜感激。
【问题讨论】:
-
"The methods .toList and .mkString are not needed".sorted == " ..LSTaaddddeeeeeeghhiikmmnnnnooorrssttttt" -
“我在 Scala 中做到这一点的唯一方法是将整数转换为字符串到列表,然后对列表进行排序并再次返回”这正是 Ruby 代码正在做的事情跨度>