コンテキスト:大量のテキストから最長の回文を見つけます。
ここに2つの解決策があります。1つは「return」(ネストされた関数から完全に抜け出す)で、もう1つはくだらない「純粋な」答えです。最初のパフォーマンスで純粋なソリューションを作成するにはどうすればよいですか?
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("")
}