刷题进行时-哈希-648. 单词替换

在英语中,我们有一个叫做 词根(root) 的概念,可以词根后面添加其他一些词组成另一个较长的单词——我们称这个词为 继承词(successor)。例如,词根an,跟随着单词 other(其他),可以形成新的单词 another(另一个)。

现在,给定一个由许多词根组成的词典 dictionary 和一个用空格分隔单词形成的句子 sentence。你需要将句子中的所有继承词用词根替换掉。如果继承词有许多可以形成它的词根,则用最短的词根替换它。

你需要输出替换之后的句子。

示例 1:

输入:dictionary = ["cat","bat","rat"], sentence = "the cattle was rattled by the battery"
输出:"the cat was rat by the bat"

class Solution {
    public String replaceWords(List dictionary, String sentence) {
       Set set = new HashSet<>();
        for (int i = 0; i < dictionary.size(); i++) {
            set.add(dictionary.get(i));
        }
        String[] arr = sentence.split(" ");
        String newStr = "";
        for (int i = 0; i < arr.length; i++) {
            String curItem = arr[i];
            for (int j = 0; j < curItem.length(); j++) {
                if (set.contains(curItem.substring(0, j+1))) {
                    arr[i] = curItem.substring(0, j+1);
                    break;
                }
            }
            if (i == arr.length-1) {
                newStr += arr[i];
            } else {
                 newStr += arr[i] + " ";
            }
           
        }
        return newStr;
    }
}

你可能感兴趣的:(刷题进行时-哈希-648. 单词替换)