How to reverse a string without affecting special characters in Scala

1 Answer

0 votes
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{}

*/

 



answered 2 days ago by avibootz

Related questions

...