解题思路
遍历即可,关键在于用Map集合记录当前单词的最短词根,再遇到这个单词后就不需要进行查询了,直接从Map中取出,降低时间复杂度
代码
class Solution {
public String replaceWords(List<String> dictionary, String sentence) {
Set<String> set = new HashSet<>();
Map<String,String> map = new HashMap<>();
final String[] split = sentence.split(" ");
set.addAll(dictionary);
for (int i = 0; i < split.length; i++) {
if (map.containsKey(split[i])){
split[i] = map.get(split[i]);
continue;
}
String cur = split[i];
for (int j = 0; j < cur.length(); j++) {
if (set.contains(cur.substring(0,j+1))){
split[i] = cur.substring(0,j+1);
break;
}
}
map.put(cur,split[i]);
}
return String.join(" ",split);
}
}