今天练习Scala发现一个好玩的东西。之前用C自己写过回文数的判断,大概用了20多行。在Scala里可以通过视图高效的截取任意范围内的回文数,只需要1-3行代码即可。
val palindrom = (1 to 100000).view.map(
x => x * x).filter(x => x.toString == x.toString.
reverse && x > 10)
//> palindrom : scala.collection.SeqView[Int,Seq[_]] = SeqViewMF(...)
palindrom.take(10).mkString(",")
//> res5: String = 121,484,676,10201,12321,14641,40804,44944,69696,94249
如果要从输入的数判断是否为回文数或者找出回文数,则可以将第一句改为
val palindrom = Input_number.view.filter(x => x.toString == x.toString.
reverse && x > 10)
如果是回文字符串的话更简单:
def palind_str(x:String):Unit ={ if (x == x.reverse) println("yes") else println("no")}