[LeetCode] 135: Word Break
2018-03-18 15:32
274 查看
[Problem]
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
For example, given
s = “leetcode”,
dict = [“leet”, “code”].
Return true because “leetcode” can be segmented as “leet code”.
[Solution]
Given a string s and a dictionary of words dict, determine if s can be segmented into a space-separated sequence of one or more dictionary words.
For example, given
s = “leetcode”,
dict = [“leet”, “code”].
Return true because “leetcode” can be segmented as “leet code”.
[Solution]
class Solution { public: bool wordBreak(string s, unordered_set<string> &dict) { // Note: The Solution object is instantiated only once and is reused by each test case. if(s.size() == 0)return true; // dp int len = s.size(); bool dp[len]; memset(dp, 0, sizeof(dp)); vector<pair<int, int> > next; string word; for(int i = len - 1; i >= 0; --i){ // no word is matched right now if(next.size() == 0){ word = s.substr(i, len - i); if(dict.find(word) != dict.end()){ dp[i] = true; next.insert(next.begin(), pair<int, int>(i, len-1)); } } // some words are matched else{ pair<int, int> first(-1, -1), second(-1, -1); for(int j = 0; j < next.size(); ++j){ // match the word [i : next[j].first-1] word = s.substr(i, next[j].first - i); if(dict.find(word) != dict.end()){ dp[i] = true; first = pair<int, int>(i, next[j].first - 1); } // match the word [i : next[j].second] word = s.substr(i, next[j].second + 1 - i); if(dict.find(word) != dict.end()){ dp[i] = true; second = pair<int, int>(i, next[j].second); } } // update next if(first.first != -1){ next.insert(next.begin(), first); } if(second.first != -1){ next.insert(next.begin(), second); } } } return dp[0]; } };
相关文章推荐
- [LeetCode] 135: Word Break
- [leetcode]Word Break
- [LeetCode]139 Word Break
- leetcode 139. Word Break
- [Leetcode] word break 拆分词语
- LeetCode 139 Word Break
- [LeetCode]Word Break
- LeetCode(135)Candy
- 【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】
- leetcode_135_Candy_贪心
- [leetcode 139]Word Break
- [leetcode] Word Break
- LeetCode - Word Break
- 【leetcode】Word Break
- [LeetCode] Word Break
- [Leetcode]Word Break
- Leetcode: Word Break
- leetcode之Word Break
- Leetcode: Word Break
- LeetCode – Refresh – Word Break