Replace Words
来源:互联网 发布:js实现中奖后彩带特效 编辑:程序博客网 时间:2024/06/04 18:45
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
这题本身就是考察Trie树的,没什么难度。但是写的确实丑陋, 然后参考了其他的代码。有待多加练习
代码:
class Solution { class Trie { TrieNode root = new TrieNode(); public void addWord(String word) { TrieNode curNode = root; for(int i=0;i<word.length();i++) { int c = word.charAt(i) - 'a'; if(curNode.next[c] == null) { curNode.next[c] = new TrieNode(); } curNode = curNode.next[c]; } curNode.isWord = true; } // find shortest prefix public String searchPrefix(String word) { TrieNode curNode = root; for(int i=0;i<word.length();i++) { int c = word.charAt(i) - 'a'; if(curNode == null) return word; if(curNode.isWord == true) return word.substring(0, i); curNode = curNode.next[c]; // cat tle } return word; } } class TrieNode { boolean isWord; TrieNode[] next; TrieNode() { next = new TrieNode[26]; } } Trie trie = new Trie(); public String replaceWords(List<String> dict, String sentence) { for(String item: dict) { trie.addWord(item); } String[] str = sentence.split(" "); for(int i = 0;i<str.length;i++){ str[i] = trie.searchPrefix(str[i]); } return String.join(" ",str); }}
阅读全文
0 0
- Replace Words
- 648. Replace Words
- Leetcode--648. Replace Words
- 648. Replace Words
- leetcode 648. Replace Words
- 648. Replace Words
- 648. Replace Words
- 648. Replace Words
- leetcode-648. Replace Words
- leetcode 648. Replace Words
- LeetCode.648 Replace Words
- leetcode 648. Replace Words
- 648. Replace Words
- 648. Replace Words
- Replace Words问题及解法
- leetcode_648. Replace Words ? 待解决
- LeetCode#648 Replace Words (week14)
- vim: replace words in many files
- c# LINQ的使用
- Java抽象类和接口的区别
- css用margin :0 auto 后依旧无法对齐
- Beginning Spring学习笔记——第6章(二)使用Spring进行声明式事务管理
- Kaggle:数据践行者的好去处(如何开展大数据的实践?)
- Replace Words
- Beginning Spring学习笔记——第6章(三)使用Spring进行编程式事务管理
- eclipse下载插件速度很慢解决方案
- Array Nesting
- 程序员的八重境界
- 如何理解keras中的shape/input_shape
- keras中的层layer
- Java集合(一)-List与ArrayList(扩容与装箱和取消装箱)
- Java中Vector,ArrayList和LinkedList的区别