美文网首页算法
IOS 算法(基础篇) ----- 将句子排序

IOS 算法(基础篇) ----- 将句子排序

作者: ShawnAlex | 来源:发表于2021-05-17 10:32 被阅读0次

一个 句子 指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。
我们可以给一个句子添加 从 1 开始的单词位置索引 ,并且将句子中所有单词 打乱顺序 。
比方说,句子 "This is a sentence" 可以被打乱顺序得到 "sentence4 a3 is2 This1" 或者 "is2 sentence4 This1 a3" 。
给你一个 打乱顺序 的句子 s ,它包含的单词不超过 9 个,请你重新构造并得到原本顺序的句子。
2 <= s.length <= 200
s 只包含小写和大写英文字母、空格以及从 1 到 9 的数字。
s 中单词数目为 1 到 9 个。
s 中的单词由单个空格分隔。
s 不包含任何前导或者后缀空格。

例子

输入:s = "is2 sentence4 This1 a3"
输出:"This is a sentence"
解释:将 s 中的单词按照初始位置排序,得到 "This1 is2 a3 sentence4" ,然后删除数字。
示例 2:

输入:s = "Myself2 Me1 I4 and3"
输出:"Me Myself and I"
解释:将 s 中的单词按照初始位置排序,得到 "Me1 Myself2 and3 I4" ,然后删除数字。

解题思路

题意不难理解, 排列顺序已给, 按照顺序排序

建议一个空数组, 按位置编号对号入座插入字符串
循环数组把每项拼接, 形成新字符串

代码

未翻译版
    func sortSentence(_ s: String) -> String {

        let sArr = s.split(separator: " "), num = "123456789"
        
        var resArr = Array(repeating: "", count: sArr.count), res = ""
        
        for var i in sArr {
            
            var temp = ""
            while num.contains(i.last!) {
                temp = String(i.last!) + temp
                i.removeLast()
            }
         
            resArr[Int(temp)! - 1] = String(i)
            
        }
        
        for i in 0..<resArr.count {
            
            res = i == 0 ? resArr[i] : res + " " + resArr[i]
        }
        
        return res
        
    }
翻译版
    func sortSentence(_ s: String) -> String {

        // 将字符串转换成数组sArr
        let sArr = s.split(separator: " "), num = "123456789"
        
        // 定义空数组resArr. 每项为空字符串, 个数与s个数相同; 结果res
        var resArr = Array(repeating: "", count: sArr.count), res = ""
        
        // 遍历数组sArr
        for var i in sArr {
            
            // 获取到对应字符串位置
            var temp = ""
            // 我这块是从后往前遍历, 依次删除末尾数字字符串, 遇到不为数字则跳出循环
            while num.contains(i.last!) {
                temp = String(i.last!) + temp
                i.removeLast()
            }
         
            // 新数组对应位置放入字符串
            resArr[Int(temp)! - 1] = String(i)
            
        }
        
        // 遍历数组resArr, 拼接成新字符串
        for i in 0..<resArr.count {
            
            res = i == 0 ? resArr[i] : res + " " + resArr[i]
        }
        
        // 返回结果
        return res
        
    }

题目来源:力扣(LeetCode) 感谢力扣爸爸 :)
IOS 算法合集地址

相关文章

  • IOS 算法(基础篇) ----- 将句子排序

    一个 句子 指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。...

  • iOS算法总结-堆排序

    iOS算法总结-堆排序 iOS算法总结-堆排序

  • iOS算法总结-冒泡排序

    iOS算法总结-冒泡排序 iOS算法总结-冒泡排序

  • 数据结构与算法—排序(下)

    在上一篇排序算法中介绍了3中基础排序算法:选择排序,插入排序,希尔排序。接下来介绍的两钟排序算法《归并排序》和《快...

  • 开发者应该掌握的几种排序算法

    该篇文章主要介绍了算法基础以及几种常见的排序算法:选择排序、插入排序、冒泡排序、快速排序、堆排序。 一、算法基础 ...

  • 排序算法之归并排序

    概念 排序类的算法,有很强的实践需求,是非常基础的一类算法。在找工作面试中,排序算法也是大概率出现。本文将讲述排序...

  • 算法-排序算法总结

    排序类型总结 1 排序算法基础实现 2 排序算法应用 2.1 基础排序 2.2 计数排序应用 2.3 快排应用 2...

  • 算法与数据结构(二):排序篇-O(n^2)算法:选择 &

    排序基础 O(n^2)的算法虽然简单,但也实用!让我们从最简单的基础排序算法开始,打开我们的算法大门! 排序算法 ...

  • iOS排序基础算法

    排序类型: 排序要求: 1.冒泡排序 2.选择排序 3.插入排序 4.二分插入排序 5.快速排序 6.希尔排序 7...

  • 基础排序算法总结

    排序算法分为内部排序和外部排序,而我们经常说的基础排序算法,都是内部排序算法。包括冒泡排序,选择排序,插入排序,快...

网友评论

    本文标题:IOS 算法(基础篇) ----- 将句子排序

    本文链接:https://www.haomeiwen.com/subject/rhtjjltx.html