단어 인터럽트 | Letcode 29일차

923 단어 python
질문 -

Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine if s can be segmented into a space-separated sequence of one or more dictionary words.


예.
"""
입력:s="leetcode",wordDict=["leet", "code"]
출력:트루
설명: "leetcode"는 "leetcode"로 나눌 수 있기 때문에true로 돌아갑니다.
"""
솔루션 -
가능한 최적화는 모든 하위 문자열을 교체하고 검사할 필요가 없고, 사전에 어떤 렌 하위 문자열이 존재하는지 알고, 이 길이만 검사할 수 있다는 것이다.
class Solution:
    def wordBreak(self, s: str, wordDict: List[str]) -> bool:
        dp = [False] * (len(s)+1)
        dp[0] = True
        d = set(wordDict)
        for i in range(len(s)):
            for word in wordDict:
                l = len(word)
                if i+1-l >= 0 and s[i+1-l:i+1] in d and dp[i+1-l]:
                    dp[i+1] = True
                    break
        return dp[-1]

좋은 웹페이지 즐겨찾기