• 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;
    	}
    }
    
  • 相关阅读:
    nil指针判断
    不使用slice作为函数入参
    log4php
    Results gofmt 0% go_vet 100% gocyclo 97% golint 100% ineffassign 97% license 100% misspell 100%
    获取点击元素的文本信息 复制到剪切板 监听鼠标悬浮
    磁盘IO
    copylocks
    sh: 1: node: Permission denied
    白盒代码审计
    升级基础
  • 原文地址:https://www.cnblogs.com/cznczai/p/11332208.html
Copyright © 2020-2023  润新知