leetcode139 单词拆分

2020-01-03  本文已影响0人  奥利奥蘸墨水

题目

题目

分析

使用hash表来存字典,然后对字符串s判断(i,j)位置间的字符串是否存在与字典中,存在的话,再判断(0,i-1)位置的字符串是否在字典中。
时间复杂度:O(n*n)。空间复杂度:O(n + m)。

代码

class Solution {
public:
    bool wordBreak(string s, vector<string>& words) {

        set<string> st(words.begin(), words.end());

        int len = s.size();
        vector<int> dp(len, 0);

        for (int i = 0; i < len; i++){
            for (int l = 1; i + l - 1 < len; l++){

                int j = i + l - 1;

                string str = s.substr(i, l);

                if (st.count(str) != 0 && (i - 1 >= 0 && dp[i - 1] == 1 || i == 0)){           
                    dp[j] = 1;
                }
            }
        }

        return dp[len - 1] == 1 ? true : false;
    }
};
上一篇 下一篇

猜你喜欢

热点阅读