1. 程式人生 > 其它 >Java-常用設計模式

Java-常用設計模式

package leetcode;


class Trie {
    private Trie[] children;
    //當前節點是否為一個單詞的結尾
    private boolean isEnd;
    public Trie() {
        //每個節點最多有26個字母
        children=new Trie[26];
        isEnd=false;
    }
    
    public void insert(String word) {
        Trie node=this;
        for(int i=0;i<word.length();i++) {
            
//找出當前字元的下標 int index=word.charAt(i)-'a'; if(node.children[index]==null) { node.children[index]=new Trie(); } //指向下一個節點 node=node.children[index]; } node.isEnd=true; } //字首不為空,且為最後一個字元 public boolean
search(String word) { Trie node=SearchPrefix(word); return node!=null&&node.isEnd; } public boolean startsWith(String prefix) { Trie node=SearchPrefix(prefix); return node!=null; } //判斷是否有字首 public Trie SearchPrefix(String prefix) { Trie node
=this; for(int i=0;i<prefix.length();i++) { int index=prefix.charAt(i)-'a'; if(node.children[index]==null) { return null; } node=node.children[index]; } return node; } }