字典樹就是一種樹形結構,優點是利用字串的公共字首來節約儲存空間,比如加入"abc","abcd","abd","b","bcd","efg","hik",構造出的字典樹如下:
基本特徵
下面我們先實現乙個字典樹,假設所有單詞的字元僅僅是'a'~'z',幷包含以下功能
void insert(string word):新增word,可以重複加.
void delete(string word):刪除word,如果word新增過多次,僅刪除乙個.
boolean search(string word):查詢word是否在字典樹中
int prefixnumber(string pre):返回以字串pre為字首的單詞數量.
public class trienode
}public class trie
public void insert(string word)
node = node.nexts[index];
node.path++;
}node.end++;
}// insert
public void delete(string word)
node = node.nexts[index];
}node.end--;}}
public boolean search(string word)
return node.end != 0;
}// search
public int prefixnum( string pre )
return node.path;
}}// trie
題目:給定乙個字串的陣列strs,請找到一種拼接順序,使得所有的字串拼接起來組成的字串是所有可能性中字典序最小的,並返回這個字串。
思路:
這是一道典型的貪心演算法題,先說一說一種錯誤的思路
錯誤的思路,先把strs中的字串按照字典順序排序,然後將串起來的結果返回. 這種做法是錯誤的,如上例的例子2,按照字典順序排序的結果是b,ba,串起來的字串是bba,但是字典順序最小的字串是bab.
講講正確思路,假設兩個字串a,b.拼接起來的字串表示為ab與ba. 如果ab的字典順序小於ba的就把字串a放在前面,否則把字串b放在前面.
private class mycomparator implements comparator
}public string lowersstring(string strs)
return res;
}
字典樹 與 01字典樹
字典樹可以降低空間複雜度 01字典樹可以降低時間複雜度。字典樹 又稱單詞查詢樹,trie樹,是一種樹形結構,是一種雜湊樹的變種。典型應用是用於統計,排序和儲存大量的字串 但不僅限於字串 所以經常被搜尋引擎系統用於文字詞頻統計。它的優點是 利用字串的公共字首來減少查詢時間,最大限度地減少無謂的字串比較...
01字典樹 小結
為了做13年南京網路賽的一道題 學了這個01字典樹 看了別人的模板 之後切了幾道水題 現在總結一下 01字典樹的實現可以看成是把乙個數的二進位制字元化後插入到一顆一般的字典樹中 比如在01字典樹種插入3時 相當於在字典樹中插入00 00011 一共33為,這個根據具體實現不同 查詢最大異或值的時候我...
01字典樹 OR問題
01字典樹 用途 解決區間異或和之類的問題 異或的性質 1.交換律 2.結合律,即 a b c a b c 3.自反性,即x x 0 4.x 0 x 有上述性質,對於區間異或和要知道此性質xor l,r xor 1,l 1 xor 1,r 注意 int型別1 31會溢位 區間異或和的題目 比如給一組...