题目
根据字典,从一个抹去空格字符串里提取全部单词组合,并拼接成完整的句子
例如:
thisisanexample
this is an example
算法
- 从找第一个单词
- 递归
- 利用哈希记录以及做好的分词(加速)
public class Solution{
public ArrayList<String> tokenizeString(String input, HashSet<String> d,HashMap<String,ArrayList<String>> memorized){
ArrayList<String> res=new ArrayList<String>();
if(input==null || input.length()==0)
return res;
//从保存结结果中找出提取后的单词,加快提取速度
if(memorized.containsKey(input))
return memorized.get(input);
if(d.contains(input))
res.add(input); //如果整个串就是一个单词,将其加入结果
int len=input.length();
for(int i=1;i<len;i++){
String prefix=input.substring(0,i);
if(d.contains(prefix)){
//如果这个前缀是一个单词,递归调用函数
for(String segsuffix: tokenizeString(input.substring(i,len),d,memorized)){
if(segsuffix!=null)
//如果后面也能提取单词,则将其加入结果
res.add(prefix+" "+segsuffix);
}
}
}
memorized.put(input,res);
return res;
}