CK week1 day5


🧨 質問する


受信した配列の要素の共通接頭辞文字を返します.
ex)strs = ['start', 'stair', 'step']は、stを返します.
ex)strs = ['start', 'wework', 'today']は、''を返します.

🎯説明する


def get_prefix(strs):

#step 1
  if len(strs) == 0:
    return ''

  n = (len(strs[0]) if len(strs[0]) < len(strs[1]) 
      		    else len(strs[1]))
  pre=''

#step 2
  for i in range(n):
    if (strs[0][i] == strs[1][i]):
      pre += strs[0][i]
  
#step 3
  for str in strs[2:]:
  	n = (len(s) if len(s) < len(pre)
    		    else len(pre))
  
    while pre:
      if (pre == str[:len(pre)]):
        break
      else:
        pre=pre[:-1]
        
    if(pre == ''):
      break
  
  return pre
    

📍 step 1

def get_prefix(strs):

#step 1
  if len(strs) == 0:
    return ''

  n = (len(strs[0]) if len(strs[0]) < len(strs[1]) else len(strs[1]))
  pre=''
受信配列の要素が存在しない場合は、空の文字列を返します.
受信した配列の1番目と2番目の要素の長さを比較し、小さな長さ値をnに含める

📍 step 2

#step 2
  for i in range(n):
    if (strs[0][i] == strs[1][i]):
      pre += strs[0][i]
for文によって文字列を逐字循環する.
1文字目と2文字目を比較し、共通の文字をpreに含める

📍 step 3

#step 3
  for str in strs[2:]:
    while pre:
      if (pre == str[:len(pre)]):
        break
      else:
        pre=pre[:-1]
        
    if(pre == ''):
      break
  
  return pre
preが配列の残りの文字列の前にあるかどうかを確認します.
もしなかったら、preの最後の字を淘汰します.
再検査を行う.
このようにして得られた最終preを返す.preがすべて空の文字列に脱落した場合、空の文字列が返されます.

ペアリング

def get_prefix(strs):
	ans = ''
	if len(strs) == 0:
	return ''
    
	strs = sorted(strs)
	for idx,i in enumerate(strs[0]):
		if i == strs[-1][idx]:
			ans += i
		else:
			break
	return ans
    
#print(get_prefix(['abc', 'acd', 'ade']))
strsをソートし、最初の要素と最後の要素の文字列を比較し、同じ文字列をansに格納して返します.
Python sorted関数は、最初の文字列のみに基づいてソートされることが知られている.
文字列の先頭と末尾を考慮して、アルファベット順に詳細に並べ替えていることがわかります.