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{}
*/