leetcode211.添加與搜索單詞-數據結構設計

與208.前綴樹的設計是一樣的,關鍵點在于word中存在通配符“.",所以針對該特殊情況,在search時針對這里進行全子節點的深度搜索

class WordDictionary {TrieNode root;private class TrieNode {char val;// 當前節點的值,冗余了,可不寫Map<Character, TrieNode> children;// 當前節點的孩子boolean isEnd;// 標記是否是葉節點,默認為falsepublic TrieNode() {children = new HashMap<>();}}public WordDictionary() {root = new TrieNode();}public void addWord(String word) {TrieNode cur = root;for (int i = 0; i < word.length(); i++) {//不存在該字符則在子節點中創建if (!cur.children.containsKey(word.charAt(i))) {cur.children.put(word.charAt(i), new TrieNode());}//指針向子節點偏移cur = cur.children.get(word.charAt(i));}cur.isEnd = true;//創建到最后一個字符時就是葉節點,置為true}public boolean search(String word) {return search(word, root);}private boolean search(String word, TrieNode root) {TrieNode cur = root;for (int i = 0; i < word.length(); i++) {//1.如果word中當前位置是.那么需要遍歷當前節點之后的每條路徑if (word.charAt(i) == '.') {Set<Character> children = cur.children.keySet();for (Character child : children) {if (search(word.substring(i + 1), cur.children.get(child))) {return true;}}return false;}//2.如果word中當前位置字符并不存在直接返回falseif (!cur.children.containsKey(word.charAt(i))) {return false;}//3.如果word中當前位置字符匹配,指針向子節點偏移cur = cur.children.get(word.charAt(i));}return cur.isEnd;}
}/*** Your WordDictionary object will be instantiated and called as such:* WordDictionary obj = new WordDictionary();* obj.addWord(word);* boolean param_2 = obj.search(word);*/

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95956.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95956.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95956.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

項目中的一些比較實用的自定義控件

本文是記錄項目開發中一些相對復雜但都比較實用的控件&#xff0c;這些控件都是基于自定義的方式去實現&#xff0c;如果有需要的朋友&#xff0c;這個可以作為一個參考&#xff0c;同時也做一個自我總結。 &#xff08;1&#xff09;子項大小不一致的RecyclerView&#xff08;…

[iOS] 折疊 cell

目錄 前言 1.原理 2.折疊 cell 的點擊選中 3.折疊 cell 高度的變化 4.實現效果 5.總結 前言 折疊 cell 是在 3GShare 中寫過的一個小控件&#xff0c;這篇博客是一個小小的總結。 1.原理 在這里的核心就是我們可以通過改變按鈕的 tag 值來判斷我們是否應該展開還是回收…

MySQL的組復制(MGR)高可用集群搭建

一、MySQL 組復制&#xff08;MGR&#xff09;核心概念 MySQL Group Replication&#xff08;簡稱 MGR&#xff09;是 MySQL 官方推出的 高可用&#xff08;HA&#xff09; 強一致性 解決方案&#xff0c;基于改進的 Paxos 協議實現&#xff0c;核心能力可概括為 3 點&#xf…

使用Shell腳本實現Linux系統資源監控郵件告警

前言 1. 問題背景與需求 2. Bash 腳本監控資源 3. Bash 腳本判斷閾值 4. 配置 msmtp 發送郵件 4.1 安裝 msmtp 4.2 創建配置文件 /etc/msmtprc 5. 發送郵件 5.1 給別人發郵件 6. 完整示例腳本 7. 測試方法 8. 常見問題解答 9. 總結 前言 在運維過程中&#xff0c…

設計整體 的 序分(三“釋”)、正宗分(雙“門”)和流通分(統一的通行表達式) 之3 “自明性”(騰訊元寶 之2)

Q&AQ11、可能還需要補充 魂軸、體軸 和 中心軸 并行 上升 的內容Q11.1、我剛才說“可能還需要補充 魂軸、體軸 和 中心軸 并行 上升 的內容” 是指的 我們今天前面討論 得出的整體設計 的一個概念整體 的一個雙螺旋上升結構中的三個軸。 您剛才是這樣 理解的嗎&#xff1f;…

使用Ansible自動化部署Hadoop集群(含源碼)--環境準備

現在我們有5臺虛擬機&#xff0c;已經配置好了主機名和網絡我們的目標是通過Ansible實現自動化部署hadoop集群。在此之前&#xff0c;我們先編寫一個shell腳本來配置hadoop集群的環境&#xff0c;包括安裝軟件、安裝配置Ansible&#xff08;一個主節點四個工作節點&#xff09;…

C#海康車牌識別實戰指南帶源碼

C#海康車牌識別實戰指南帶源碼前言車牌識別技術在智能交通、停車場管理等領域有著廣泛的應用。海康威視作為國內領先的安防廠商&#xff0c;其車牌識別相機提供了豐富的SDK接口供開發者使用。本文將詳細介紹如何使用C#語言結合海康威視SDK實現車牌識別功能&#xff0c;并解析關…

智慧能源新范式:數字孿生平臺如何驅動風電場的精細化管理?

摘要你有沒有想過&#xff0c;一座風力發電場背后&#xff0c;藏著一個“看不見的孿生兄弟”&#xff1f;它能提前預知風機故障&#xff0c;實時模擬極端天氣的影響&#xff0c;甚至能“訓練”運維人員在虛擬場景中演練搶修。這就是數字孿生——一個讓風電場從“靠經驗管理”轉…

STM32-FreeRTOS操作系統-任務管理

引言 隨著嵌入式技術的飛速發展&#xff0c;STM32與FreeRTOS的融合愈發緊密。本文聚焦于STM32平臺下FreeRTOS操作系統的任務管理&#xff0c;旨在為開發者提供清晰的思路與實用的技巧&#xff0c;助力高效開發。 為什么要進行任務管理&#xff1f; 在嵌入式系統中&#xff0c;…

工業領域 ACP 協議全解析:從入門到實戰案例

工業領域 ACP 協議全解析&#xff1a;從入門到實戰案例 文章目錄工業領域 ACP 協議全解析&#xff1a;從入門到實戰案例一、前言二、ACP 協議是什么&#xff1f;1. 基本定義2. 與數據傳輸協議的區別三、ACP 協議的核心功能1. 身份認證&#xff08;Authentication&#xff09;2.…

計算機組成原理:計算機硬件的基本組成

&#x1f4cc;目錄&#x1f5a5;? 計算機硬件的基本組成&#xff1a;從經典到現代的架構演進&#x1f9e9; 一、計算機硬件的五大部分&#xff1a;功能與協同&#x1f4e5; &#xff08;一&#xff09;輸入設備&#xff1a;人機交互的“入口”&#x1f4e4; &#xff08;二&am…

AI歌手功能終于上線!Suno AI 帶你保存歌曲的靈魂

當我們談論一首歌時&#xff0c;究竟是什么讓它“獨一無二”&#xff1f;是主唱的聲音質感&#xff1f;是旋律里的氛圍&#xff1f;還是那種無法復制的風格氣息&#xff1f; 如今&#xff0c;Suno AI 給出了答案—— AI歌手功能正式上線&#xff01; &#x1f31f;什么是「AI…

Dubbo3.3 Triple協議處理東西向流量

前言 Apache Dubbo 3.3 對 Triple 協議做了升級&#xff0c;現在 Dubbo 不僅可以處理東西向流量&#xff0c;也可以處理南北向流量。 **東西向流量&#xff08;East-West Traffic&#xff09; ** 指數據中心或網絡內部同級設備/服務之間的通信。例如&#xff0c;微服務之間的…

操作系統核心特點詳解:從并發到分布式,一文搞懂考研必備知識

操作系統核心特點詳解&#xff1a;從并發到分布式&#xff0c;一文搞懂考研必備知識 大家好&#xff0c;今天咱們來聊聊操作系統&#xff08;OS&#xff09;這個計算機世界的“大管家”。想象一下&#xff0c;你的電腦就像一個忙碌的廚房&#xff0c;操作系統就是那個廚師長&am…

2025精選5款AI視頻轉文字工具,高效轉錄秒變文字!

視頻轉文本的需求早已滲透到生活的方方面面&#xff1a;網課學習需要提取課件臺詞、會議記錄想快速整理要點、追劇時急需生肉轉字幕…… 手動記錄不僅費時&#xff0c;還容易遺漏關鍵信息。今天就分享5款實用工具&#xff0c;從免費到專業全覆蓋&#xff0c;幾步操作就能讓視頻…

MyBatis Example模式SQL注入風險

在使用MyBatis逆向工程生成的Example查詢模式時&#xff0c;很多開發者看到XML中存在${}占位符就會擔心SQL注入問題。但實際上&#xff0c;存在${}并不等同于存在SQL注入風險。本文將詳細分析何時會存在真正的注入風險。 存在SQL注入的兩個關鍵前提 前提一&#xff1a;Criteria…

寶塔PostgreSQL安裝pgvecto插件contrib包實現向量存儲

1. 寶塔安裝 首先確保你的寶塔已經安裝了 PostgreSQL。 安裝好后是能看到上面這個界面的。 我安裝的是 16.1 版本&#xff0c;下面的教程講的也是 16.1 版本的。 2.開放防火墻的端口號 5432 3.允許外部訪問所有數據庫 4.設置超級管理員用戶密碼 用戶名默認為&#xff1a;po…

麒麟系統 doc轉pdf

# 安裝LibreOffice&#xff08;如果尚未安裝&#xff09; sudo apt update sudo apt install libreoffice# 將DOC轉換為PDF libreoffice --headless --convert-to pdf 你的文檔.doc# 或者指定輸出目錄 libreoffice --headless --convert-to pdf --outdir /輸出目錄 你的文檔.do…

Python實現生成矩形框、三角形框、六邊形框和圓環點云

本節我們分享上節提到的不填充點云。在點云處理、計算機視覺與工業檢測中&#xff0c;幾何輪廓&#xff08;邊框/環&#xff09;點云比實心點云更能反映物體的邊緣特征、結構骨架與形貌突變區域。Python 借助 NumPy 即可快速生成矩形邊框、三角形邊框、六邊形邊框與圓環點云&am…

2025年本體論:公理與規則的挑戰與趨勢

摘要本文章旨在深入探討本體論&#xff08;Ontology&#xff09;中公理&#xff08;Axioms&#xff09;與規則&#xff08;Rules&#xff09;的核心概念、技術實現、驗證方法、性能評估及其在2025年的前沿趨勢與挑戰。公理與規則是構建嚴謹、一致知識模型的邏輯基石&#xff0c…