」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 特里樹

特里樹

發佈於2024-07-31
瀏覽:194

Trie

实现 Trie 数据结构

Trie数据结构的Strider讲解

class Node{
    Node [] node = new Node[26];
    boolean flag;
    public Node(){

    }
    public boolean containsKey(char c){
        return node[c-'a']!=null;
    }
    public void put(char c, Node n){
        node[c-'a']  = n;
    }
    public Node get(char c){
        return node[c-'a'];
    }
    public void setFlag() {
        this.flag = true;
    }
    public boolean getFlag(){
        return this.flag;
    }
}

class Trie {
    Node root;
    public Trie() {
        root = new Node();
    }
    //will take tc : O(len) of the word
    public void insert(String word) {
        Node node  = root;
        for(int i =0;i



Trie数据结构二

奋斗者的解释,以便更好地理解

import java.util.* ;
import java.io.*; 

class Node {
    Node node[] = new Node[26];
    int endWith = 0;// will keep track of no. of words ending with this word
    int countPrefix=0;// will keep track of no. of words starting with this word
    public Node(){

    }
    public boolean containsKey(char c){
        return node[c-'a']!=null;
    }
    public void put(char c, Node n){
        node[c-'a'] = n;
    }
    public Node get(char c){
        return node[c-'a'];
    }
    public void incrementCountPrefix() {
          this.countPrefix;
    }
    public void decrementCountPrefix(){
        --this.countPrefix;
    }
    public void incrementEndWith(){
          this.endWith;
    }
    public void deleteEndWith(){
        --this.endWith;
    }
    public int getCountPrefix(){
        return this.countPrefix;
    }
    public int getEndWith(){
        return this.endWith;
    }


}
public class Trie {
    Node root;
    public Trie() {
        // Write your code here.
        root = new Node();
    }

    public void insert(String word) {
        Node node = root;
        for(int i =0;i



完整字符串

// tc : O(n*l)

import java.util.* ;
import java.io.*; 

class Node{
    Node[] node = new Node[26];
    boolean flag;
    public Node(){}
    public void put(char c , Node n){
        node[c-'a'] = n;
    }
    public boolean containsKey(char c){
        return node[c-'a']!=null;
    }
    public Node get(char c){
        return node[c-'a'];
    }
    public void setEnd(){
        this.flag = true;
    }
    public boolean isEnd(){
        return this.flag;
    }
}

class Trie{
    Node root;
    public Trie(){
        root = new Node();
    }
    public boolean checkIfPrefixPresent(String s){
      Node node = root;
      boolean flag= true;
      for(int i = 0;i



计算不同子串的个数

Tc:在
中插入不同的唯一子字符串的 O(n^2) Trie数据结构

import java.util.ArrayList;

public class Solution 
{
    Node root;
    static int count;
    public Solution(){
        root = new Node();
    }

    public static int countDistinctSubstrings(String s) 
    {
        count = 0;
        //    Write your code here.
        Solution sol = new Solution();
        for(int i =0;i




          

            
  

            
        
版本聲明 本文轉載於:https://dev.to/prashantrmishra/trie-e56?1如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • 如何有效地逆轉Java 8流?
    如何有效地逆轉Java 8流?
    反向java 8 streams 特定的intstream reversal 可以創建一個自定義方法以相反的順序映射值範圍。例如,如果我們的intstream範圍從-5到0,則將其倒流將導致流0到-5。可以使用以下代碼來實現這一點:此方法避免進行拳擊和排序,從而產生了更有效的解決方案。 @cus...
    程式設計 發佈於2025-02-06
  • 版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    版本5.6.5之前,使用current_timestamp與時間戳列的current_timestamp與時間戳列有什麼限制?
    在默認值中使用current_timestamp或mysql版本中的current_timestamp或在5.6.5 這種限制源於遺產實現的關注,這些限制需要為Current_timestamp功能提供特定的實現。消息和相關問題 `Productid` int(10)unsigned not ...
    程式設計 發佈於2025-02-06
  • 如何使用不同數量列的聯合數據庫表?
    如何使用不同數量列的聯合數據庫表?
    合併列數不同的表 當嘗試合併列數不同的數據庫表時,可能會遇到挑戰。一種直接的方法是在列數較少的表中,為缺失的列追加空值。 例如,考慮兩個表,表 A 和表 B,其中表 A 的列數多於表 B。為了合併這些表,同時處理表 B 中缺失的列,請按照以下步驟操作: 確定表 B 中缺失的列,並將它們添加到表的...
    程式設計 發佈於2025-02-06
  • 如何防止在HTML元素上拖放?
    如何防止在HTML元素上拖放?
    如何在Web設計中禁用拖放在網絡設計中,對於控制用戶與某些HTML的交互是至關重要的元素。一個普遍的挑戰是在不可能期望的情況下防止瀏覽器啟動拖放操作。 暫時禁用拖放功能,您可以使用以下方法: 通過在這些事件處理程序中返回false,您可以有效防止瀏覽器啟動拖放操作。這樣可以確保用戶的預期操作(例如...
    程式設計 發佈於2025-02-06
  • 大批
    大批
    [2 數組是對象,因此它們在JS中也具有方法。 切片(開始):在新數組中提取部分數組,而無需突變原始數組。 令arr = ['a','b','c','d','e']; // USECASE:提取直到索引作...
    程式設計 發佈於2025-02-06
  • 如何從PHP服務器發送文件?
    如何從PHP服務器發送文件?
    將文件發送到user
    程式設計 發佈於2025-02-06
  • 可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    可以在純CS中將多個粘性元素彼此堆疊在一起嗎?
    </main> <section> ,但无法使其正常工作,如您所见。任何洞察力都将不胜感激! display:grid; { position:sticky; top:1em; z-index:1 1 ; { { { pos...
    程式設計 發佈於2025-02-06
  • 如何限制動態大小的父元素中元素的滾動範圍?
    如何限制動態大小的父元素中元素的滾動範圍?
    在交互式界面中實現垂直滾動元素的CSS高度限制 考慮一個佈局,其中我們具有與可滾動的映射div一起移動的subollable map div用戶的垂直滾動,同時保持其與固定側邊欄的對齊方式。但是,地圖的滾動無限期擴展,超過了視口的高度,阻止用戶訪問頁面頁腳。 可以限制地圖的滾動,我們可以利用CS...
    程式設計 發佈於2025-02-06
  • 如何使用固定的標頭和可滾動車身創建Bootstrap 3表?
    如何使用固定的標頭和可滾動車身創建Bootstrap 3表?
    用粘性定位一個簡單但有效的解決方案涉及使用CSS粘性定位。這種方法涉及分配位置:粘性;頂部:0;到表標頭(TH)元素,以確保它們保持固定在表的頂部。這是實現的分解:在上面的代碼中,我們使用class tablefixhead創建一個容器,其中包括溢出:auto;使表可滾動和100px的高度定義可...
    程式設計 發佈於2025-02-06
  • 如何在整個HTML文檔中設計特定元素類型的第一個實例?
    如何在整個HTML文檔中設計特定元素類型的第一個實例?
    [2單獨使用CSS,整個HTML文檔可能是一個挑戰。 the:第一型偽級僅限於與其父元素中類型的第一個元素匹配。 以下CSS將使用添加的類樣式的第一個段落: }
    程式設計 發佈於2025-02-06
  • 如何在SQL中的單個字段中有效搜索多個值?
    如何在SQL中的單個字段中有效搜索多個值?
    [2進入其組成部分,並單獨搜索每個部分。當處理以空格分離的搜索詞時,這一點特別有用。 在SQL中實現此目標,人們可能會考慮使用與通配符的類似運算符在每個搜索詞之前和之後匹配任何字符。但是,這種方法不是很有效,因為它需要多個類似的子句,並且可能導致性能問題。 相反,一個更有效的解決方案是使用在運算符中...
    程式設計 發佈於2025-02-06
  • 如何使用$ _GET在PHP中檢索多個選擇框值?
    如何使用$ _GET在PHP中檢索多個選擇框值?
    在php array。 解決方案:作為選項數組,您需要將方括號添加到Select元素的名稱中。這是您的代碼的修改版本:”多個...> 此更改使PHP能夠將所選選項解釋為數組。然後,您可以使用以下代碼在PHP腳本中訪問它: Header(“ content-type:text/plain”); f...
    程式設計 發佈於2025-02-06
  • 為什麼在Chrome中縮放孩子Div的父級為“溢出:隱藏”和“ border-radius”的父級?
    為什麼在Chrome中縮放孩子Div的父級為“溢出:隱藏”和“ border-radius”的父級?
    transform:scale and溢出:chrome 在使用CSS3 Transform:Scale:Scale,一個特殊問題時。如果父級div溢出:應用和邊界劃線了,則縮放子div會導致其超越其父。 CSS過渡將解決該問題。但是,這種方法被證明是無效的。 的解決方案的解決方案很大: T...
    程式設計 發佈於2025-02-06
  • 如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    如何從Python中的字符串中刪除表情符號:固定常見錯誤的初學者指南?
    從python 導入編解碼器 導入 text = codecs.decode('這狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#帶有表情符號 emoji_pattern = re.compile(“ [”...
    程式設計 發佈於2025-02-06
  • 為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    為什麼我會收到MySQL錯誤#1089:錯誤的前綴密鑰?
    mySQL錯誤#1089:錯誤的前綴鍵錯誤descript 理解prefix keys primary鍵(movie_id(3))primary鍵(Movie_id) primary鍵(Movie_id) primary鍵(Movie_id) > `這將在整個Movie_ID列上建立標...
    程式設計 發佈於2025-02-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3