Leetcode - Maximum Depth of N-ary Tree
Leetcode - Concatenated Words

Leetcode - Word Break

violet posted @ May 01, 2020 06:40:44 AM in 算法 with tags Algorithm DP Golang , 212 阅读

https://leetcode.com/problems/word-break/

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.

Note:

  • The same word in the dictionary may be reused multiple times in the segmentation.
  • You may assume the dictionary does not contain duplicate words.

Example 1:

Input: s = "leetcode", wordDict = ["leet", "code"]
Output: true
Explanation: Return true because "leetcode" can be segmented as "leet code".

Example 2:

Input: s = "applepenapple", wordDict = ["apple", "pen"]
Output: true
Explanation: Return true because "applepenapple" can be segmented as "apple pen apple".
             Note that you are allowed to reuse a dictionary word.

 

func wordBreak(s string, wordDict []string) bool {
    hash := map[string]bool{}
    for _, w := range wordDict {
        hash[w] = true
    }
    m := len(s)
    dp := make([]bool, m+1)
    dp[0] = true
    for i := 1; i <= m; i++ {
        for j := i-1; j >= 0; j-- {
            if dp[j] && hash[s[j:i]] {
                dp[i] = true
                break
            }
        }
    }
    return dp[m]
}

登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter