ruby - 在 Scala 中寻找“整齐的数字”
问题描述
一个整齐的数字是一个数字按非递减顺序排列的数字,例如 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 中更简洁的方法,我将不胜感激。
解决方案
您可以sorted
在 Scala 中使用字符串,所以
def tidy_number(n: Int) = {
val s = n.toString
s == s.sorted
}
分两部分进行还可以避免额外的 toInt 转换。
我从未使用过 ruby,但这篇文章表明你正在做最好的方式
推荐阅读
- jenkins - 詹金斯黄瓜报告
- java - 如何记录和重新抛出整个班级
- sql-server - 如何使用 SSIS 将平面文件的数据插入到两个 sql 表中
- javascript - 了解函数回调和内存泄漏 js
- azure-devops - Service Fabric 更新清单:管道工件
- c++ - Qt Kits:两个 gcc 版本;编译但找不到 libgomp.so.1、libstdc++.so.6、
- kubernetes - 如何管理资源匮乏的 Istio 默认/SDS 安装?
- python-2.7 - 关于 numpy where 函数的困惑(试图突出函数的最大值)
- python - python中的字符串对象行为
- c# - LINQ 查询不支持带有 .NET SDK 3.6 的 Azure Cosmos 引发 Group By