您的位置:首页 > 职场人生

面试:字符串:产生括号

2016-06-06 17:31 288 查看

题目

根据字典,从一个抹去空格字符串里提取全部单词组合,并拼接成完整的句子

例如:

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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: