LeetCode 139 Word Break (DFS 分词 解存在性判断)
2016-09-17 21:37
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 =
dict =
Return true because
题目链接:https://leetcode.com/problems/word-break/
题目分析:比Word Break 2简单,这里不需要记录答案,直接判断即可
public class Solution {
public boolean DFS (int pos, List<String>[] dp, boolean[] flag) {
if (pos == 0) {
flag[0] = true;
return true;
}
for (int i = 0; i < dp[pos].size(); i ++) {
DFS(pos - dp[pos].get(i).length(), dp, flag);
if (flag[0]) {
return true;
}
}
return false;
}
public boolean wordBreak(String s, Set<String> wordDict) {
int len = s.length();
if (len == 0 || wordDict.size() == 0) {
return false;
}
List<String>[] dp = new ArrayList[len + 1];
dp[0] = new ArrayList<>();
for (int st = 0; st < len; st ++) {
if (dp[st] != null) {
for (String word: wordDict) {
int ed = st + word.length();
if (ed <= len) {
if(s.substring(st, ed).equals(word) == true) {
if (dp[ed] == null) {
dp[ed] = new ArrayList<>();
}
dp[ed].add(word);
}
}
}
}
}
if (dp[len] == null) {
return false;
}
boolean[] flag = new boolean[1];
flag[0] = false;
return DFS(len, dp, flag);
}
}
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".
题目链接:https://leetcode.com/problems/word-break/
题目分析:比Word Break 2简单,这里不需要记录答案,直接判断即可
public class Solution {
public boolean DFS (int pos, List<String>[] dp, boolean[] flag) {
if (pos == 0) {
flag[0] = true;
return true;
}
for (int i = 0; i < dp[pos].size(); i ++) {
DFS(pos - dp[pos].get(i).length(), dp, flag);
if (flag[0]) {
return true;
}
}
return false;
}
public boolean wordBreak(String s, Set<String> wordDict) {
int len = s.length();
if (len == 0 || wordDict.size() == 0) {
return false;
}
List<String>[] dp = new ArrayList[len + 1];
dp[0] = new ArrayList<>();
for (int st = 0; st < len; st ++) {
if (dp[st] != null) {
for (String word: wordDict) {
int ed = st + word.length();
if (ed <= len) {
if(s.substring(st, ed).equals(word) == true) {
if (dp[ed] == null) {
dp[ed] = new ArrayList<>();
}
dp[ed].add(word);
}
}
}
}
}
if (dp[len] == null) {
return false;
}
boolean[] flag = new boolean[1];
flag[0] = false;
return DFS(len, dp, flag);
}
}
相关文章推荐
- LeetCode 139 Word Break
- leetcode[139] Word Break
- leetcode 139 —— Word Break
- [leetcode] 139 Word Break
- [leetcode] 139.Word Break
- LeetCode(139)Word Break
- leetcode-139-Word Break
- LeetCode(139) Word Break
- [leetcode 139]Word Break
- leetcode 139 Word Break(阿里测试岗笔试题)
- [leetcode 139] Word Break
- [Leetcode 139, medium] Word Break
- LeetCode 139. Word Break
- 【LeetCode】139 - Word Break
- Leetcode 139 Word Break
- 【LeetCode】139. Word Break
- leetcode[139]Word Break
- [LeetCode]139.Word Break
- 【LeetCode-面试算法经典-Java实现】【139-Word Break(单词拆分)】
- LeetCode 139 Word Break