前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Algorithem_ReverseWords

Algorithem_ReverseWords

原创
作者头像
莫空9081
发布2022-04-15 13:35:23
2040
发布2022-04-15 13:35:23
举报
文章被收录于专栏:iOS 备忘录

Reverse Words in a String III

Given a string s, reverse the order of characters in each word within a sentence while still preserving whitespace and initial word order.

<!--more-->

Example 1:

代码语言:Swift
复制
Input: s = "Let's take LeetCode contest"
Output: "s'teL ekat edoCteeL tsetnoc"

Example 2:

代码语言:Swift
复制
Input: s = "God Ding"
Output: "doG gniD"

解法一

逻辑:

把字符串根据空格切割成数组,然后遍历数组,对数组中字符串调用 reversed 方法,最后在使用空格join为字符串返回

代码如下:

代码语言:Swift
复制
class Solution {
    func reverseWords(_ s: String) -> String {
        let list = s.components(separatedBy: " ")
        var results: [String] = []
        for str in list {
            let reverseStr = String(str.reversed())
            results.append(reverseStr)
        }
        return results.joined(separator: " ")
    }
}

虽然可以得出结果,但是和没用到 TwoPointers算法,另一种解法是,使用TwoPointers,先把字符串转为字符数组,然后遍历字符数组,如果当前字符为空格,则对空格前面(两个空格之间)的元素交换位置。

代码如下:

代码语言:Swift
复制
class Solution {
    func reverseWords(_ s: String) -> String {
        var characters = Array(s)
        var start = 0
        var end = 0
        for i in 0..<characters.count {
            let c = characters[i]
            if String(c) == " " {
                // 当前为空格,则 revese 前面的数据
                end = i - 1 
                swapList(&characters, start, end)
                start = i + 1
            }
        }
        swapList(&characters, start, characters.count-1)
        return String(characters)
    }
    
    func swapList(_ characters: inout [Character], _ start: Int, _ end: Int) {
        var mutStart = start
        var mutEnd = end
        while mutStart < mutEnd {
            characters.swapAt(mutStart, mutEnd)
            mutStart += 1
            mutEnd -= 1
        }
    }
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Reverse Words in a String III
    • 解法一
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档