LeetCode: Word Break [139]
2014-06-28 20:57
323 查看
【题目】
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".
【题意】
给定一个字符串s和词典dict, 判定s能够用dict中的单词拼接而成【思路】
依次确定以每个位置i结尾的单词的前驱单词集合(只要记住前驱单词的结束位置)如果s[i]存在前驱集合,也就是说s[0~i]能被切割成dict中的单词
本地要做的就是一次判断s[0-i]被切分成dict中的单词
要判断s[0-i]只需要借助s[0-j] j=0,1,...,i-1, 存在j使得s[0-j]可分割,则只需要判断s[j+1, i],如果s[j+1, i]是dict中的单词,则可判定s[0-i]可分割
DP问题
【代码】
class Solution { public: bool wordBreak(string s, unordered_set<string> &dict) { if(s.length()==0)return false; vector<bool> canSegmented(s.length(), false); vector<int> segmentedIndex(1, -1); //记录可被完整切分的位置 //依次判定每个位置i上s[0-i]能够被完整切分 for(int i=0; i<s.length(); i++){ //根据以确定的可切分位来判断当前位 for(int k=0; k<segmentedIndex.size(); k++){ if(dict.find(s.substr(segmentedIndex[k]+1, i-segmentedIndex[k]))!=dict.end()){ canSegmented[i]=true; segmentedIndex.push_back(i); break; } } } return canSegmented[s.length()-1]; } };
相关文章推荐
- leetcode 139 Word Break
- leetcode No139. Word Break
- [leetcode] 139. Word Break
- Leetcode139题Word Break的两种动态规划解法
- Leetcode 139. Word Break
- leetcode 139|140. Word Break 1|2
- [LeetCode-Algorithms-139] "Word Break" (2017.12.14-WEEK15)
- Leetcode 139. Word Break I&&II
- 139. Word Break LeetCode
- Java for LeetCode 139 Word Break
- Leetcode 139. Word Break & 140. Word Break II
- LeetCode Word Break(DFS)
- LeetCode-Word Break II
- LeetCode 140 Word Break II
- Word Break LeetCode
- leetcode-Word Break II
- leetcode新题 - word break
- leetcode 140. Word Break II
- LeetCode:Word Break(DP)
- LeetCode – Word Break II (Java)