我想编写一个Scala函数,它按字母顺序在字符串中对字符串进行排序,如下所示:
sort(List("CAR", "MELON", "HOUSE"))
//> res49: List[String] = List(ACR, ELMNO, EHOSU)
问题是我必须使用匹配/案例来完成它。
我最接近可能的解决方案是这样的:
def sortMatchCase(xs: List[String]): List[String] = {
@tailrec
def sortMatchCaseAux(aux: String, ys: List[String]): String = ys match {
case Nil => ""
case x :: xs => sortMatchCaseAux(aux.sorted, xs)
}
sortMatchCase(xs)
}
然而这不起作用。
有人可以帮我一个忙吗?
答案 0 :(得分:2)
你可能想要对每个字符串中的字符进行排序(然后对字符串进行排序?),如下所示:
val list = List("CAR", "MELON", "HOUSE")
val sortedList = list.map(s => new String(s.toCharArray.sorted)).sorted
sortedList foreach println
答案 1 :(得分:1)
我认为这只是用tailrec开发递归函数的练习(否则,list.map(_.sorted)
就完成了它)。如果是这样的话,就会发生以下情况:
import scala.annotation.tailrec
def sortMatchCase(list: List[String]): List[String] = {
@tailrec
def sortMatchCaseAux(aux: List[String], l: List[String]): List[String] = l match {
case Nil => aux
case x :: xs => sortMatchCaseAux(x.sorted :: aux, xs)
}
sortMatchCaseAux(Nil, list).reverse
}
scala> sortMatchCase(List("CAR", "MELON", "HOUSE"))
res1: List[String] = List(ACR, ELMNO, EHOSU)