Scala - 在列表中排序字符串

时间:2017-04-08 01:41:25

标签: scala sorting

我想编写一个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)
}

然而这不起作用。

有人可以帮我一个忙吗?

2 个答案:

答案 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)