[プログラマーHash Lv 2]電話番号リスト


電話番号リスト


質問リンク

私の答え

def solution(phone_book):
    answer = True
    phone_dic = {}

    for phone_number in phone_book:
        phone_dic[phone_number] = 0

    for phone_number in phone_book:
        temp = ''
        for num in phone_number:
            temp += num
            if temp in phone_dic and temp != phone_number:
                return False
    return answer
  • 電話帳(phone book)の電話番号(phone number)をphone dicのキー値に設定します.
  • temp変数では、電話番号(phone number)を重複文で1つの位置に置き、if文(tempとphone dicのキー値が一致し、tempとphone numberが異なる条件)でTrue/Falseを判断する.
  • 他人の解答

    def solution(phoneBook):
        phoneBook = sorted(phoneBook)
    
        for p1, p2 in zip(phoneBook, phoneBook[1:]):
            if p2.startswith(p1):
                return False
        return True
  • ハッシュを用いたものではないが,startswith法を用いた簡潔な解である.よく使わないのは忘れた答えだ!