zoukankan      html  css  js  c++  java
  • 208. Implement Trie (Prefix Tree)

    class Node {
    	final static int the_maxsize = 26;
    	Node[] list = new Node[the_maxsize];
    	char data;
    	boolean isEnd = false;                                                 //用isEnd 代替isSelf  节约空间
    }
    
    class Trie {
    	Node node = new Node();
    	/** Initialize your data structure here. */
    	public Trie() {}
    
    	/** Inserts a word into the trie. */
    	public void insert(String word) {
    		Node temp = node;
    		char[] c = word.toCharArray();
    		for (int i = 0; i < c.length; i++) {
    			int loc = c[i] - 'a';
    			if (temp.list[loc] == null) {
    				temp.list[loc] = new Node();
    				temp.list[loc].data = c[i];
    			}
    			temp = temp.list[loc];
    		}
    		temp.isEnd = true;
    	}
    
    	/** Returns if the word is in the trie. */
    	public boolean search(String word) {
    		if (word == null)
    			return false;
    		Node temp = node;
    		char[] c = word.toCharArray();
    		for (int i = 0; i < c.length; i++) {
    			int loc = c[i] - 'a';
    			if (temp.list[loc] != null)  temp = temp.list[loc];
    			else return false;
    		}
    		if (temp.isEnd ) return true;
    		else return false;
    	}
    
    	/**
    	 * Returns if there is any word in the trie that starts with the given prefix.
    	 */
    	public boolean startsWith(String prefix) {
    		Node temp = node;
    		char[] c = prefix.toCharArray();
    		for (int i = 0; i < c.length; i++) {
    			int loc = c[i] - 'a';
    			if (temp.list[loc] != null)
    				temp = temp.list[loc];
    			else
    				return false;
    		}
    		return true;
    	}
    }
    
  • 相关阅读:
    组件之间通信(父传子)
    flex布局
    ffmpeg解析TS流(转)
    swift之?和!的含义(转)
    Swift之画圆角添加多个枚举值方法
    swift之singleton
    swift之闭包
    Swift之fallthrough
    Selector
    Settings Bundle
  • 原文地址:https://www.cnblogs.com/cznczai/p/11332208.html
Copyright © 2011-2022 走看看