HOME/Articles/

Leetcode75-6

Article Outline

例題との相違点

  • 自分の回答(8ms)
import "strings"

func reverseWords(s string) string {
    arr := strings.Fields(s)
    result := ""

    for i := len(arr)-1; i>= 0; i-- {

        if i==0 {
            result += arr[i]
        } else {
            result += arr[i]
            result += " "
        }
    }
    return result
}
  • 最速の例題
func reverseWords(s string) string {
    words := strings.Split(s, " ")
    result := ""
    for i := len(words) - 1; i >= 0; i-- {
        if words[i] != "" {
            result += strings.TrimSpace(words[i]) + " "
        }
    }
    return strings.TrimSpace(result)
}
  • 違い

    • Fieldsではなく、Splitを使ってる
    • i が0かどうかで判定せず、TrimSpaceで先頭と末尾のスペースをとっている。
  • 検証

    • i==0での判定をやめて、最後に末尾を除いたら最速になった。
    • Fieldsとsplitは試していないが、そこまで違いはなさそう。
  • 以下が直したコード(0ms)

func reverseWords(s string) string {
    arr := strings.Fields(s)
    result := ""

    for i := len(arr)-1; i>= 0; i-- {

        result += arr[i] + " "
    }
    return result[:len(result) -1 ]
}

感想

  • Splitで分けると、スペースが連続で続いている場合、""となる箇所がある。