Leetcode Note: Go - Length of Last Word

Length of Last Word - LeetCode
https://leetcode.com/problems/length-of-last-word/

  • Go 言語で取り組んだメモ

所感

  • space で s を split して return された最後の要素を len すれば良さそう

実装準備

func lengthOfLastWord(s string) int {
    return 0    
}

func main() { 
    s := "Hello World" // 5
    fmt.Println(lengthOfLastWord(s))
}

v1

func lengthOfLastWord(s string) int {
    splited := strings.Split(s, " ")
    return len(splited[len(splited)-1:len(splited)][0])
}

=> Wrong Answer

  • Input が " fly me to the moon " の場合に moon を判定して 4 を return したいが 0 になってしまう
  • 調べた所 strings の TrimSpace を使えば space を取り除くことが出来そう

回答

func lengthOfLastWord(s string) int {
    splited := strings.Split(strings.TrimSpace(s), " ")
    return len(splited[len(splited)-1])
}
  • strings.TrimSpace でスペースを除去してうまく動いた
  • array, slice の last element へのアクセスは myarray[len(myarray) - 1] という書き方のほうがシンプルに表現できると思ったので修正
  • かなり楽に実装できたものの、パフォーマンスがかなり悪い
  • 今後 Easy 問題解く際に余裕があれば、パフォーマンス改善にも手を出していきたい・・・