func reverseWords(s: String?) -> String? {
guard let s = s else {
return nil
}
var chars = Array(s.characters)
var start = 0
reverseWord(&chars, start, chars.count - 1)
for i in 0 ..< chars.count{
print(chars[i])
if i == chars.count - 1 || chars[i + 1] == " "{
print(i)
print(start)
reverseWord(&chars, start, i)
start = i + 2
}
}
return String(chars)
}
fileprivate func reverseWord<T>(_ chars : inout [T],_ start : Int , _ end : Int) {
var start = start , end = end
while start < end {
swapCharacter(&chars, start, end)
start += 1
end -= 1
}
}
fileprivate func swapCharacter<T>(_ chars : inout [T] , _ p : Int , _ q : Int) {
(chars[p] , chars[q]) = (chars[q] , chars[p])
}
var s = "the sky is blue"
print(reverseWords(s: s))