zoukankan      html  css  js  c++  java
  • 139. Word Break

    Problem statement:

    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. You may assume the dictionary does not contain duplicate words.

    For example, given
    s = "leetcode",
    dict = ["leet", "code"].

    Return true because "leetcode" can be segmented as "leet code".

    Solution:

    Obviously, this is a problem of DP. It belongs to one sequence and one dimension DP problem.

    The size of the array is s.size() + 1

    The philosophy of this problem is similar with 132. Palindrome Partitioning II, we need compare from j to i, i is current position, while j is the position in front of i. The value of dp[i] depends on dp[j] and string( j , i).

    dp[i] means if current string is breakable of not. dp[i] is true only there is a string in front of it is breakable and from i + 1 to j is a word in the dictionary.

    The DP formula is:

    if(dp[j] && find(wordDict.begin(), wordDict.end(), s.substr(j, i - j)) != wordDict.end()){
        dp[i] = true;
    }

    return dp[size].

    class Solution {
    public:
        bool wordBreak(string s, vector<string>& wordDict) {
            int size = s.size();
            vector<bool> dp(size + 1, false);
            dp[0] = true;
            for(int i = 1; i <= size; i++){
                for(int j = 0; j < i; j++){
                    if(dp[j] && find(wordDict.begin(), wordDict.end(), s.substr(j, i - j)) != wordDict.end()){
                        dp[i] = true;
                    }
                }
            }
            return dp[size];
        }
    };
  • 相关阅读:
    struts2基础
    hibernate框架基础
    Django的模板层
    HBuilder无法连接夜神模拟器的解决办法
    Django的视图层
    Django的路由层
    Django简介
    http协议
    web应用
    Mongodb之增删改查
  • 原文地址:https://www.cnblogs.com/wdw828/p/6834252.html
Copyright © 2011-2022 走看看