Algorithm電話番号リスト
ソース:プログラマコードテスト練習電話リスト
電話番号リスト
電話番号リスト
私の答え
from itertools import combinations
import re
def solution(phone_book):
for i in combinations(phone_book, 2):
if re.match("^"+i[0], i[1]) or re.match("^"+i[1], i[0]):
return False
return True
これは、正規表現およびitertools
のcombinations
を使用する方法である.実際,これは時間の複雑さのため,効率面で無理に通過した回答である.簡単そうに見えますが、見た目もよくありません.
他人の解答
def solution(phone_book):
answer = True
hash_map = {}
for phone_number in phone_book:
hash_map[phone_number] = 1
for phone_number in phone_book:
temp = ""
for number in phone_number:
temp += number
if temp in hash_map and temp != phone_number:
answer = False
return answer
これは慣例に従って解いた答えがもたらした答えです.これはハッシュカテゴリに分類された問題であり,ハッシュ解答を利用した答えである.dictionary
を利用するのは、dictionary
がハッシュ値を利用した資料構造であるからである.まずphone_book
をdictionary
形態に変換し,ハッシュテーブルにより参照する.この場合、list
等の資料構造を参照した場合よりも速い速度で参照することができる.
Reference
この問題について(Algorithm電話番号リスト), 我々は、より多くの情報をここで見つけました
https://velog.io/@blakekim93/Algorithm전화번호-목록
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
from itertools import combinations
import re
def solution(phone_book):
for i in combinations(phone_book, 2):
if re.match("^"+i[0], i[1]) or re.match("^"+i[1], i[0]):
return False
return True
def solution(phone_book):
answer = True
hash_map = {}
for phone_number in phone_book:
hash_map[phone_number] = 1
for phone_number in phone_book:
temp = ""
for number in phone_number:
temp += number
if temp in hash_map and temp != phone_number:
answer = False
return answer
Reference
この問題について(Algorithm電話番号リスト), 我々は、より多くの情報をここで見つけました https://velog.io/@blakekim93/Algorithm전화번호-목록テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol