本篇文章主要介绍了"Implement Trie Prefix Tree",主要涉及到implement,prefix方面的内容,对于其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
题目链接:https://leetcode.com/problems/implement-trie-prefix-tree/题目:Implement a tri...
题目链接:https://leetcode.com/problems/implement-trie-prefix-tree/
题目:
Implement a trie with insert
, search
,
and startsWith
methods.
Note:
You may assume that all inputs are consist of lowercase letters a-z
.
思路:
每个结点包括三个属性:结点代表的字符、指向儿子结点的指针、代表该结点是否是word。最后一个属性是因为word不一定是从根到叶结点的路径。比如insert("abc")、insert("ab"),search("ab")应该返回true。因为之前插入了ab,哪怕b不是叶结点,所以结点要有一个属性表示从root到该是否为word。
算法:
[java] view
plain copy 

- import java.util.HashMap;
-
- class TrieNode {
- // Initialize your data structure here.
- String val = "";
- HashMap nexts = new HashMap();
- boolean isword = false;
- public TrieNode() {
- }
- }
-
- public class Trie {
- private TrieNode root;
-
- public Trie() {
- root = new TrieNode();
- }
-
- // Inserts a word into the trie.
- public void insert(String word) {
- TrieNode p = root;
- for (int i = 0; i < word.length(); i++) {
- String key = word.charAt(i) + "";
- if (p.nexts.containsKey(key)) {
- p = p.nexts.get(key);
- } else {
- TrieNode t = new TrieNode();
- t.val = key;
- p.nexts.put(key, t);
- p = t;
- }
- if(i==word.length()-1){
- p.isword = true;
- }
- }
- System.out.println(p.val+":"+p.isword);
- }
-
- // Returns if the word is in the trie.
- public boolean search(String word) {
- TrieNode p = root;
- for (int i = 0; i < word.length(); i++) {
- String key = word.charAt(i) + "";
- if (p.nexts.containsKey(key)) {
- p = p.nexts.get(key);
- } else {
- return false;
- }
- }
- if (p.nexts.size() == 0)
- return true;
- else if(!p.isword)
- return false;
- else
- return true;
- }
-
- // Returns if there is any word in the trie
- // that starts with the given prefix.
- public boolean startsWith(String prefix) {
- TrieNode p = root;
- for (int i = 0; i < prefix.length(); i++) {
- String key = prefix.charAt(i) + "";
- if (p.nexts.containsKey(key)) {
- p = p.nexts.get(key);
- } else {
- return false;
- }
- }
- return true;
- }
- }
以上就介绍了Implement Trie Prefix Tree,包括了implement,prefix方面的内容,希望对其他编程jrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播有兴趣的朋友有所帮助。
本文网址链接:http://www.codes51.com/article/detail_1470219.html