1859. 将句子排序——Go语言

旧城等待, 2023-10-04 14:02 157阅读 0赞

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

我们可以给一个句子添加 从 1 开始的单词位置索引 ,并且将句子中所有单词 打乱顺序

  • 比方说,句子 "This is a sentence" 可以被打乱顺序得到 "sentence4 a3 is2 This1" 或者 "is2 sentence4 This1 a3"

给你一个 打乱顺序 的句子 s ,它包含的单词不超过 9 个,请你重新构造并得到原本顺序的句子。

示例 1:

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

示例 2:

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

提示:

  • 2 <= s.length <= 200
  • s 只包含小写和大写英文字母、空格以及从 19 的数字。
  • s 中单词数目为 19 个。
  • s 中的单词由单个空格分隔。
  • s 不包含任何前导或者后缀空格。

    package main

    import (

    1. "fmt"
    2. "strconv"
    3. "strings"

    )

    func sortSentence(s string) string {

    1. var out string
    2. string_slice := strings.Split(s, " ")
    3. var index = make([]string, len(string_slice))
    4. var value = make([]string, len(string_slice))
    5. for i := 0; i < len(string_slice); i++ {
    6. index[i] = string_slice[i][len(string_slice[i])-1 : len(string_slice[i])]
    7. value[i] = string_slice[i][0 : len(string_slice[i])-1]
    8. }
    9. for i := 1; i <= len(string_slice); i++ {
    10. for j := 0; j < len(string_slice); j++ {
    11. if index[j] == strconv.Itoa(i) {
    12. if i != len(string_slice) {
    13. out = out + value[j] + " "
    14. } else {
    15. out = out + value[j]
    16. }
    17. }
    18. }
    19. }
    20. return out

    }

    func main() {

    1. s := "is2 sentence4 This1 a3"
    2. res := sortSentence(s)
    3. fmt.Println(res)

    }

解法2

  1. package main
  2. import (
  3. "fmt"
  4. "sort"
  5. "strings"
  6. )
  7. func sortSentence(s string) string {
  8. var out string
  9. string_slice := strings.Split(s, " ")
  10. var string_slice2 = make([]string, len(string_slice))
  11. for i := 0; i < len(string_slice); i++ {
  12. string_slice2[i] = string_slice[i][len(string_slice[i])-1:len(string_slice[i])] + string_slice[i][0:len(string_slice[i])-1]
  13. }
  14. sort.Strings(string_slice2)
  15. for i := 0; i < len(string_slice); i++ {
  16. if i != len(string_slice)-1 {
  17. out = out + string_slice2[i][1:len(string_slice2[i])] + " "
  18. } else {
  19. out = out + string_slice2[i][1:len(string_slice2[i])]
  20. }
  21. }
  22. return out
  23. }
  24. func main() {
  25. s := "is2 sentence4 This1 a3"
  26. res := sortSentence(s)
  27. fmt.Println(res)
  28. }

发表评论

表情:
评论列表 (有 0 条评论,157人围观)

还没有评论,来说两句吧...

相关阅读

    相关 冒泡排序Go语言实现

    冒泡排序通过相邻元素的比较和交换来逐步将最大(或最小)的元素"浮"到序列的一端,从而实现排序。尽管冒泡排序在时间复杂度上并不优秀,但其思想简单易懂,实现也相对简单。冒泡排...

    相关 1859. 句子排序——Go语言

    一个 句子 指的是一个序列的单词用单个空格连接起来,且开头和结尾没有任何空格。每个单词都只包含小写或大写英文字母。 我们可以给一个句子添加 从 1 开始的单词位置索引 ,并且

    相关 5742. 句子排序

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

    相关 go语言 冒泡排序原理

    一、概述       go语言中的冒泡排序和java中的冒泡排序的原理一样,如果你懂得java的冒泡排序,那么go只是换了一种写法而已。冒泡,简而言之,就是相邻的两个数据进行