How to reverse a string without affecting special characters in Swift

1 Answer

0 votes
import Foundation

/// Reverses only alphabetic characters in a string.
/// Special characters remain in their original positions.
///
/// Example:
/// Input : "ab*#cde!@$,fg{}"
/// Output: "gf*#edc!@$,ba{}"
func reverseLettersKeepSpecial(_ input: String) -> String {

    // Extract all letters and reverse them
    let reversedLetters = Array(
        input.filter { $0.isLetter }.reversed()
    )

    var letterIndex = 0
    var result = String()

    // Build the result string
    for ch in input {
        if ch.isLetter {
            result.append(reversedLetters[letterIndex])
            letterIndex += 1
        } else {
            // Keep special characters unchanged
            result.append(ch)
        }
    }

    return result
}

// Driver code
let input = "ab*#cde!@$,fg{}"

let output = reverseLettersKeepSpecial(input)

print("Input : \(input)")
print("Output: \(output)")


/*
run:

Input : ab*#cde!@$,fg{}
Output: gf*#edc!@$,ba{}

*/

 



answered 2 days ago by avibootz

Related questions

...