def reverseMiddleWords(input: String): String = {
val words = input.split("\\s+")
val lastIdx = words.length - 1
words.zipWithIndex.map {
case (word, index) if index > 0 && index < lastIdx =>
word.reverse // Reverse characters of middle words
case (word, _) =>
word // Keep first and last words as is
}.mkString(" ")
}
val s = "Hello how are you today"
println(reverseMiddleWords(s))
/*
run:
Hello woh era uoy today
*/