LeetCode 648 : Replace Words(java)

来源:互联网 发布:python telnetlib详解 编辑:程序博客网 时间:2024/06/05 20:27

原题

In English, we have a concept called root, which can be followed by some other words to form another longer word - let’s call this word successor. For example, the root an, followed by other, which can form another word another.

Now, given a dictionary consisting of many roots and a sentence. You need to replace all the successor in the sentence with the root forming it. If a successor has many roots can form it, replace it with the root with the shortest length.
You need to output the sentence after the replacement.

Example 1:
Input: dict = [“cat”, “bat”, “rat”]
sentence = “the cattle was rattled by the battery”
Output: “the cat was rat by the bat”

Note:
The input will only have lower-case letters.
1 <= dict words number <= 1000
1 <= sentence words number <= 1000
1 <= root length <= 100
1 <= sentence words length <= 1000

思路

已知sentence和缩写list,把sentence中的word按照一定规则转换成其缩写,并返回sentence。解题思路是,用一个hashset存储缩写list中的元素,把sentence通过split(” “)分割成单词array,逐个单词对应查找其缩写并转换成其缩写,再把缩写后的单词array合成sentence并返回。

代码

public class Solution {        public String replaceWords(List<String> dict, String sentence) {                Set<String> set=new HashSet<String>();                set.addAll(dict);                String Words[]=sentence.split(" ");                String replaceWords="";                for(int i=0;i<Words.length;i++)                    for(int j=0;j<Words[i].length();j++)                        //查找单词的缩写                        if(set.contains(Words[i].substring(0,j+1))){                            //把单词转换成其缩写格式                            Words[i]=Words[i].substring(0,j+1);                            break;                        }                //合成replaceWords后的sentence                for(int i=0;i<Words.length;i++)                    replaceWords+=(Words[i]+" ");                return replaceWords.substring(0,replaceWords.length()-1);        }}
原创粉丝点击