字符串反转

1、给出一个字符串,要求将其按照单词顺序进行反转。比如:如果是“the sky is blue”,那么反转后的结果就是"blue is sky the"。

思路:
1)整个字符串进行反转 "the sky is blue" -> "eulb si yks eht"
2)反转单个单词 "eulb si yks eht" -> "blue is sky the"

Swift版本

func reverse(_ chars: inout [T], start: Int, end: Int) {
    var start = start
    var end = end
    while start < end {
        swap(&chars, beforeIndex: start, afterIndex: end)
        start += 1
        end -= 1
    }
}

func swap(_ chars: inout [T], beforeIndex: Int, afterIndex: Int) {
    // 利用元祖进行交换
    (chars[beforeIndex], chars[afterIndex]) = (chars[afterIndex], chars[beforeIndex])
}

func reverseWords(str: String?) -> String? {
    guard let inputString = str else { return nil }
    var chars = Array(inputString.characters)
    var start = 0
    // 1
    reverse(&chars, start: start, end: chars.count - 1)

    for i in 0..

思路2:

以空格为间隔字符将字符串转换为数组,然后将数组进行反序,最后在加入空格字符变成字符串

func reverseString(_ str: String) -> String {
    if str.isEmpty { return str }
    // 转换为数组
    var stringArray = str.components(separatedBy: " ")
    // 反转数组
    stringArray.reverse()
    // 变为字符串
    return stringArray.joined(separator: " ")
}

输入:the sky is blue
输出:blue is sky the

你可能感兴趣的:(字符串反转)