[LeetCode] 0140. 워드 브레이크 ii

Python, C++, JavaScript, SQL 및 TypeScript의 다양한 LeetCode 솔루션을 살펴보세요. 여러 프로그래밍 언어로 인터뷰 준비, 학습 및 코드 연습에 적합합니다. Github 레포 링크

딱딱한

 


문자열이 주어지면 에스 그리고 문자열 사전 단어사전, 공백 추가 에스 각 단어가 유효한 사전 단어인 문장을 구성합니다. 어떤 주문이든.

메모 사전에 있는 동일한 단어가 분할에서 여러 번 재사용될 수 있습니다.

예시 1:

입력: s = "catsanddog", wordDict = ["고양이","고양이","그리고","모래","개"]
산출: ["고양이와 개","고양이 모래개"]

예 2:

입력: s = "파인애플펜사과", wordDict = ["사과","펜","사과펜","소나무","파인애플"]
산출: ["파인애플 펜사과","파인애플펜사과","파인애플펜사과"]
설명: 사전 단어를 재사용할 수 있다는 점에 유의하세요.

예시 3:

입력: s = "catsandog", wordDict = ["고양이","개","모래","그리고","고양이"]
산출: []

제약:

  • 1 <= 길이 <= 20
  • 1 <= wordDict.length <= 1000
  • 1 <= wordDict[i].length <= 10
  • 에스 그리고 단어사전[i] 영문 소문자로만 구성됩니다.
  • 모든 문자열은 단어사전 ~이다 고유한.
  • 답변의 길이가 10을 초과하지 않는 방식으로 입력이 생성됩니다.5.

파이썬

				
					# 시간 복잡도: O(2^n) # 공간 복잡도: O(2^n) 입력 가져오기 목록 클래스 솔루션: def wordBreak(self, s: str, wordDict: List[str]) -> List[str]: word_set = set(wordDict) memoization = {} return self._dfs(s, word_set, memoization) def _dfs(self, 잔여Str: str, wordSet: set, memoization: dict) -> List[str]: 메모에 남은Str이 있는 경우: leftStr이 아닌 경우 memoization[remainingStr] 반환: range(1, len(remainingStr) + 1)의 i에 대해 [""] 결과 = [] 반환: currentWord = 잔여Str[:i] if currentWord in wordSet: for nextWord in self. _dfs(remainingStr[i:], wordSet, memoization): results.append( currentWord + (" " if nextWord else "") + nextWord) memoization[remainingStr] = 결과 반환 결과 s = "catsanddog" wordDict = ["cat" , "고양이", "및", "모래", "개"] print(Solution().wordBreak(s, wordDict))
				
			
ko_KR한국어