Code Kata | Day 5
質問する
strsは単語を含む配列です.
共通の開始語(prefix)を返してください.
論理は似ているようだがstartswith法を用い,これは簡潔で未熟なコードである.
例えば、
そしてこれ以上当たらないと、止まります.
解けるときは知らないPythonが多いと思いますが、学識があるのはいいですね!
strsは単語を含む配列です.
共通の開始語(prefix)を返してください.
예를 들어
strs = ['start', 'stair', 'step']
return은 'st'
strs = ['start', 'wework', 'today']
return은 ''
私の答えdef get_prefix(strs):
sorted_strs = sorted(strs)
if strs == []:
return ''
if sorted_strs[0][0] != sorted_strs[-1][0]:
return ''
if len(sorted_strs[0]) > len(sorted_strs[-1]):
shortest = len(sorted_strs[-1])
elif len(sorted_strs[0]) <= len(sorted_strs[-1]):
shortest = len(sorted_strs[0])
answer = []
for i in range(shortest):
if sorted_strs[0][i] == sorted_strs[-1][i]:
answer.append(sorted_strs[0][i])
print(answer)
return ''.join(answer)
模範解答def get_prefix(strs):
if len(strs) == 0:
return ''
res = ''
strs = sorted(strs)
for i in strs[0]:
if strs[-1].startswith(res+i):
res += i
else:
break
return res
初めて聞いたPythonメソッドstartswith
を使用しました.論理は似ているようだがstartswith法を用い,これは簡潔で未熟なコードである.
startswtih
は文字列が特定の文字で始まるかどうかを判断し、上の論理はボンニリストの最後の文字列がres+i
で始まるかどうかを判断する.例えば、
strs = ['start', 'stair', 'step']
という名前のリストがある場合、step
の文字列がres+i
で始まるかどうかを判断する.res
は最初は空の文字列であり、start
の「s(i)」から正しく判断され、res
に格納され、次のres+i(st)
を再判断し、res
に格納される.そしてこれ以上当たらないと、止まります.
startswith
を探して、勉強して、また少し理解できる問題です.解けるときは知らないPythonが多いと思いますが、学識があるのはいいですね!
Reference
この問題について(Code Kata | Day 5), 我々は、より多くの情報をここで見つけました https://velog.io/@jacoblee19/Code-Kata-Day-5テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol