Leetcode-139. Word Break
2016-10-27 13:55
417 查看
前言:为了后续的实习面试,开始疯狂刷题,非常欢迎志同道合的朋友一起交流。因为时间比较紧张,目前的规划是先过一遍,写出能想到的最优算法,第二遍再考虑最优或者较优的方法。如有错误欢迎指正。博主首发CSDN,mcf171专栏。
博客链接:mcf171的博客
——————————————————————————————
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
这个题目提醒了我,我一开始用Set只保存了对的字符串,结果超时了,我看了别人的解法是保存错的字符串。。想了想确实,因为错的比对的情况多很多。Your runtime beats 5.13% of java
submissions
public class Solution {
private Set<String> invalidStr = new HashSet<String>();
public boolean wordBreak(String s, Set<String> wordDict) {
boolean flag = false;
if(wordDict.contains(s)) return true;
if(invalidStr.contains(s)) return false;
for(int i = 1; i < s.length(); i ++){
String subString = s.substring(0,i);
if(wordDict.contains(subString)) flag = wordBreak(s.substring(i,s.length()),wordDict);
if(!flag)invalidStr.add(s);
else break;
}
return flag;
}
}
后来我想了想,我也可以把对的保存了。。不过我这样还是有点麻烦,看了下dp的思路,其实我这个也算是dp,用一个dp的array保存哪些位置是true确实更好一些。。Your runtime beats
16.34% of java submissions.
public class Solution {
private Set<String> invalidStr = new HashSet<String>();
private Set<String> validStr = new HashSet<String>();
public boolean wordBreak(String s, Set<String> wordDict) {
boolean flag = false;
if(wordDict.contains(s) || validStr.contains(s)) return true;
if(invalidStr.contains(s)) return false;
for(int i = 1; i < s.length(); i ++){
String subString = s.substring(0,i);
if(wordDict.contains(subString)) flag = wordBreak(s.substring(i,s.length()),wordDict);
if(!flag)invalidStr.add(s);
else{validStr.add(s); break;}
}
return flag;
}
}
博客链接:mcf171的博客
——————————————————————————————
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".
这个题目提醒了我,我一开始用Set只保存了对的字符串,结果超时了,我看了别人的解法是保存错的字符串。。想了想确实,因为错的比对的情况多很多。Your runtime beats 5.13% of java
submissions
public class Solution {
private Set<String> invalidStr = new HashSet<String>();
public boolean wordBreak(String s, Set<String> wordDict) {
boolean flag = false;
if(wordDict.contains(s)) return true;
if(invalidStr.contains(s)) return false;
for(int i = 1; i < s.length(); i ++){
String subString = s.substring(0,i);
if(wordDict.contains(subString)) flag = wordBreak(s.substring(i,s.length()),wordDict);
if(!flag)invalidStr.add(s);
else break;
}
return flag;
}
}
后来我想了想,我也可以把对的保存了。。不过我这样还是有点麻烦,看了下dp的思路,其实我这个也算是dp,用一个dp的array保存哪些位置是true确实更好一些。。Your runtime beats
16.34% of java submissions.
public class Solution {
private Set<String> invalidStr = new HashSet<String>();
private Set<String> validStr = new HashSet<String>();
public boolean wordBreak(String s, Set<String> wordDict) {
boolean flag = false;
if(wordDict.contains(s) || validStr.contains(s)) return true;
if(invalidStr.contains(s)) return false;
for(int i = 1; i < s.length(); i ++){
String subString = s.substring(0,i);
if(wordDict.contains(subString)) flag = wordBreak(s.substring(i,s.length()),wordDict);
if(!flag)invalidStr.add(s);
else{validStr.add(s); break;}
}
return 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, medium] Word Break
- leetcode 139. Word Break
- Leetcode 139 Word Break
- [leetcode 139] Word Break
- leetcode 139. Word Break(dp,字典匹配)
- Leetcode 139, Word Break
- LeetCode139:Word Break
- Leetcode--139. Word Break
- [leetcode-139]Word Break(java)
- Leetcode 139. Word Break (Medium) (cpp)
- LeetCode 139. Word Break