object ReverseStringKeepSpecial {
/**
* Reverses only alphabetic characters in the string.
* Special characters remain in their original positions.
*
* Example:
* Input : "ab*#cde!@$,fg{}"
* Output: "gf*#edc!@$,ba{}"
*/
def reverseLettersKeepSpecial(input: String): String = {
// Extract and reverse all alphabetic characters
val letters = input.filter(_.isLetter).reverse
var letterIndex = 0
// Build the result string
input.map { ch =>
if (ch.isLetter) {
val reversedChar = letters(letterIndex)
letterIndex += 1
reversedChar
} else {
// Keep special characters unchanged
ch
}
}
}
def main(args: Array[String]): Unit = {
val input = "ab*#cde!@$,fg{}"
val output = reverseLettersKeepSpecial(input)
println(s"Input : $input")
println(s"Output: $output")
}
}
/*
run:
Input : ab*#cde!@$,fg{}
Output: gf*#edc!@$,ba{}
*/