648. Replace Words
来源:互联网 发布:软件使用说明怎么写 编辑:程序博客网 时间:2024/05/29 15:23
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树,没什么说的
package l648;import java.util.List;public class Solution {class Trie {boolean end = false;Trie[] next = new Trie[26];} public String replaceWords(List<String> dict, String sentence) { Trie root = new Trie(); for(String s : dict) { buildTrie(root, s); } String[] ss = sentence.split(" "); StringBuilder sb = new StringBuilder(); for(String s : ss) { StringBuilder t = new StringBuilder(); findPrefix(root, s, t); sb.append(t).append(" "); } return sb.toString().trim(); }private void findPrefix(Trie root, String s, StringBuilder sb) {if(root.end)return ;if("".equals(s))return;char c = s.charAt(0);if(root.next[c-'a'] != null) {sb.append(c);findPrefix(root.next[c-'a'], s.substring(1), sb);} else {sb.append(s);return;}}private void buildTrie(Trie root, String s) {if("".equals(s)) {root.end = true;return;}char c = s.charAt(0);if(root.next[c-'a'] == null)root.next[c-'a'] = new Trie();buildTrie(root.next[c-'a'], s.substring(1));}}
阅读全文
0 0
- 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
- 648. Replace Words
- 648. Replace Words
- Replace Words
- LeetCode 648. Replace Words 字典树练习
- leetcode 648. Replace Words 字典树
- 【LeetCode】648.Replace Words(Medium)解题报告
- leetcode 648. Replace Words 公共前缀
- LeetCode.648 Replace Words
- CF
- Geth多台电脑搭建集群网络
- 互联网业务场景下消息队列架构
- 实现了一个AOI模块
- 剑指offer 39---求二叉树的深度 && 输入一颗二叉树的根节点,判断该树是不是平衡二叉树
- 648. Replace Words
- CodeForces
- 39. Combination Sum I && II
- find the mincost rout
- HDU 4960 Another OCD Patient (dp)
- Echarts学习之路 —— echarts介绍
- trait特性
- std::priority_queue 优先队列
- Android高级控件之ListView的优化以及下拉刷新页面