LeetCodeの問題集、58. Length of Last Word
がacceptされたので、備忘録として。
概要
アルファベットとスペースのみで構成された文章に対して、最後の単語(ないし文字列)を抜き出す問題。
コード
今回はPythonでの記述。
コード全容
Solution.py
class Solution(object):
def lengthOfLastWord(self, s):
result = s.split()[len(s.split()) - 2] if s.split()[len(s.split()) - 1] == "" else s.split()[len(s.split()) - 1]
return(len(result))
考え方
pythonのsplit関数は、引数無しでタブ、改行、(連続する)スペースを区切り文字として分割してくれるので、文字列を分割して、一番最後の要素の長さを取得する。
文字列の最後がスペースだった場合分割後の配列の最後の要素が""になるので、その場合は最後から2番目の要素の長さを取得する。
処理の詳細フロー (例)s="we␣have␣two␣␣␣dogs␣␣␣␣"
s.split() → ["we","have","two","dogs",""]s.split()[-1] == "" がTrue → 対照はs.split()[-2] → result="dogs"
len(result)=4
自分の結果
計算速度:上から数えて約45%のところ(真ん中らへん)
メモリ使用量:上から数えて25%ぐらいのところ(ちょっと上の方)
普通ぐらい。
備考
splitを使ってはずるいような気がするのだが、どうなのだろうか。