上下文:在大量文本中找到最长的回文。
这里有两种解决方案——一种是“返回”(完全脱离嵌套函数),另一种是糟糕的“纯”答案。我如何编写具有第一个性能的纯解决方案?
def isPalindrome(str: String) : Boolean = str.reverse == str
def longestPalindrome(haystack : String) : String = {
(haystack.length to 1 by -1).foreach{ substrSize =>
haystack.sliding(substrSize).foreach{ substr =>
if(isPalindrome(substr))
return substr
}
}
""
}
def longestPalindrome2(haystack : String) : String = {
val x = for {
substrSize <- haystack.length to 1 by -1
substr <- haystack.sliding(substrSize)
} yield (substr -> isPalindrome(substr))
x.find(_._2 == true).map(_._1).getOrElse("")
}