Список в scala не обновляется
Я новичок в Scala Collections, и в настоящее время я хочу разделить данный список строк в кортеж из двух списков (List[String], List[String])
, который содержит список строк палиндрома и остальную часть входных строк.
Например, если ввод List("racecar", "abcd", "lilil", "effg")
вывод должен быть (List("racecar", "lilil"), List("abcd", "effg"))
У меня есть решение с использованием фильтра. Но, в настоящее время, пытаюсь уточнить мое решение, используя foldLeft. Мой новый подход заключается в следующем:
def stringTuples2(strings: List[String]): (List[String], List[String]) = {
strings.foldLeft((List[String](), List[String]()))((b, a) => {
if (a.equals(a.reverse)) { b._1 :+ a; b }
else { b._2 :+ a; b }
})}
Я не уверен, что я делаю неправильно, но вывод для этого решения - Tuple из двух пустых списков, т.е. (List(), List()).
Помощь приветствуется. Спасибо!
1 ответ
Ваша попытка изменить b
создает новый List
потом брось новый List
прочь и вернуться b
, что без изменений. Вынуть ;b
часть и вернуть обновленный кортеж: (b._1 :+ a, b._2)
или же (b._1, b._2 :+ a)
Кстати, вот другой подход к решению.
List("racecar", "abcd", "lilil", "effg").partition(s => s == s.reverse)