描述
给出一个字符串s和一个词典,判断字符串s是否可以被空格切分成一个或多个出现在字典中的单词。
样例
给出
s = "lintcode"
dict = ["lint","code"]
返回 true 因为"lintcode"可以被空格切分成"lint code"
代码
public class Solution {
/*
* @param s: A string
* @param dict: A dictionary of words dict
* @return: A boolean
*/
public boolean wordBreak(String s, Set<String> dict) {
// write your code here
if("".equals(s)&&dict.isEmpty()){
return true;
}
if("".equals(s)||dict.isEmpty()){
return false;
}
int maxDict=0;
for(String str:dict){
if(str.length()>maxDict){
maxDict=str.length();
}
}
boolean[] dp=new boolean[s.length()+1];
dp[0]=true;
for(int i=1;i<=s.length();i++){
dp[i]=false;
for(int len=1;len<=maxDict&&len<=i;len++){
if(dp[i-len]){
String subStr=s.substring(i-len,i);
if(dict.contains(subStr)){
dp[i]=true;
break;
}
}
}
}
return dp[s.length()];
}
}