648. 单词替换

心已赠人 2023-10-04 08:14 119阅读 0赞

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

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

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

示例 1:

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

示例 2:

  1. 输入:dictionary = ["a","b","c"], sentence = "aadsfasf absbs bbab cadsfafs"
  2. 输出:"a a b c"

示例 3:

  1. 输入:dictionary = ["a", "aa", "aaa", "aaaa"], sentence = "a aa a aaaa aaa aaa aaa aaaaaa bbb baba ababa"
  2. 输出:"a a a a a a a a bbb baba a"

示例 4:

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

示例 5:

  1. 输入:dictionary = ["ac","ab"], sentence = "it is abnormal that this solution is accepted"
  2. 输出:"it is ab that this solution is ac"

提示:

  • 1 <= dictionary.length <= 1000
  • 1 <= dictionary[i].length <= 100
  • dictionary[i] 仅由小写字母组成。
  • 1 <= sentence.length <= 10^6
  • sentence 仅由小写字母和空格组成。
  • sentence 中单词的总量在范围 [1, 1000] 内。
  • sentence 中每个单词的长度在范围 [1, 1000] 内。
  • sentence 中单词之间由一个空格隔开。
  • sentence 没有前导或尾随空格。

    package Solution648;

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;

    class Solution {

    1. public String replaceWords(List<String> dictionary, String sentence) {
    2. String arr[] = sentence.split("\\s+");
    3. for (int j = 0; j < arr.length; j++) {
    4. for (int i = 0; i < dictionary.size(); i++) {
    5. // System.out.println(dictionary.get(i) + "(.*)");
    6. arr[j] = arr[j].replaceAll("^" + dictionary.get(i) + "(.*)", dictionary.get(i));
    7. }
    8. }
    9. // System.out.println(Arrays.toString(arr));
    10. String out = "";
    11. for (int j = 0; j < arr.length; j++) {
    12. out = out + arr[j] + " ";
    13. }
    14. return out.trim();
    15. }
    16. public static void main(String[] args) {
    17. Solution sol = new Solution();
    18. List<String> dictionary = new ArrayList<String>();
    19. dictionary.add("a");
    20. dictionary.add("aa");
    21. dictionary.add("aaa");
    22. dictionary.add("aaaa");
    23. String sentence = "a aa a aaaa aaa aaa aaa aaaaaa bbb baba ababa";
    24. System.out.println(sol.replaceWords(dictionary, sentence));
    25. }

    }

发表评论

表情:
评论列表 (有 0 条评论,119人围观)

还没有评论,来说两句吧...

相关阅读

    相关 648. 单词替换

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

    相关 单词替换

    描述 输入一个字符串,以回车结束(字符串长度<=100)。该字符串由若干个单词组成,单词之间用一个空格隔开,所有单词区分大小写。现需要将其中的某个单词替换成另一个单词,并输出