Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크
영어 알파벳을 사용하는 새로운 외계 언어가 있습니다. 그러나 글자의 순서는 당신에게 알려져 있지 않습니다.
문자열 목록이 제공됩니다. 단어
이제 외계어 사전에서 단어
~이다 사전식으로 정렬됨 이 새로운 언어의 규칙에 따라.
이 주장이 올바르지 않고 주어진 문자열 배열이 단어
어떤 문자 순서에도 대응할 수 없습니다. 반품 "".
그렇지 않으면 반환 새로운 외계 언어의 고유한 문자를 문자열로 정렬한 것 사전순으로 증가하는 순서 새로운 언어의 규칙에 따라. 솔루션이 여러 개인 경우 반환 그들 중 누구라도.
예시 1:
입력: 단어 = ["wrt","wrf","er","ett","rftt"] 산출: "워프"
예 2:
입력: 단어 = ["z","x"] 산출: "zx"
예시 3:
입력: 단어 = ["z","x","z"]
산출: ""
설명: 주문이 잘못되었으므로 반품하세요. ""
.
제약:
1 <= 단어.길이 <= 100
1 <= 단어[i].길이 <= 100
단어[i]
영문 소문자로만 구성됩니다.
파이썬
# 시간 복잡도: O(C) # 공간 복잡도: O(1) 입력 가져오기 목록 클래스 해결 방법: def foreignOrder(self,words: List[str]) -> str: reverseAdjList = {c: [] for word inwords for c in word} for firstWord, secondWord in zip(words,words[1:]): for c, d in zip(firstWord, secondWord): if c != d: reverseAdjList[d].append(c) break else : if len(secondWord) < len(firstWord): return "" see = {} 출력 = [] def Visit(node): if node in visible: return see[node] visible[node] = false for nextNode in reverseAdjList[ node]: 결과 = 방문(nextNode) 결과가 아닌 경우: False 반환 see[node] = True 출력.append(node) 모두가 아닌 경우 True 반환(reverseAdjList의 노드에 대한 방문(node)): "" 반환 "" 반환. Join(출력) 단어 = ["wrt", "wrf", "er", "ett", "rftt"] print(Solution().alienOrder(words))