整洁的数字是数字按非递减顺序排列的数字,例如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 实现它的更简洁的方法,我将不胜感激。
最佳答案
您可以在 Scala 中对字符串使用 sorted
,所以
def tidy_number(n: Int) = {
val s = n.toString
s == s.sorted
}
分两部分进行还可以避免额外的 toInt 转换。
我从未使用过 ruby ,但是 this post建议你以最好的方式做到这一点
关于ruby - 在 Scala 中查找 'tidy numbers',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51812677/