当前位置: 首页 > news >正文

211. 添加与搜索单词 - 数据结构设计

https://leetcode.cn/problems/design-add-and-search-words-data-structure/description/?envType=study-plan-v2&envId=top-interview-150

思路:就是然我们设计一个字典树,和上一题基本一样,之前使用的是树的方式来构建字典树。

class Main{class WordDictionary {private WordDictionary[] children;private boolean isEnd;public WordDictionary() {this.children = new WordDictionary[26];this.isEnd = false;}public void addWord(String word) {WordDictionary node = this;for (int i = 0; i < word.length(); i++) {char ch = word.charAt(i);int index = ch - 'a';if (node.children[index] == null) {node.children[index] = new WordDictionary();}node = node.children[index];}node.isEnd = true;}public boolean search(String word) {WordDictionary node = this;return search2(node, word, 0);}public boolean search2(WordDictionary node, String word, int index) {if(index == word.length()) {return node.isEnd;}//遇到'.' 的逻辑:遍历该层的所有非空节点只要所有情况中存在匹配情况就返回true(意思就是只有true才是终点)char ch = word.charAt(index);if(ch == '.') {for(WordDictionary child : node.children) {if( child != null) {if(search2(child, word, index + 1)) {return true;}}}} else {if(node.children[ch - 'a'] != null && search2(node.children[ch - 'a'], word, index + 1)) {return true;}}return false;}}public static void main(String[] args) {Main main = new Main();WordDictionary wordDictionary = main.new WordDictionary();wordDictionary.addWord("bad");wordDictionary.addWord("dad");wordDictionary.addWord("mad");System.out.println(wordDictionary.search("pad")); // return falseSystem.out.println(wordDictionary.search("bad")); // return trueSystem.out.println(wordDictionary.search(".ad")); // return trueSystem.out.println(wordDictionary.search("b..")); // return true}}

http://www.xdnf.cn/news/613819.html

相关文章:

  • 【Qt开发】按钮类控件
  • 5.24 note
  • FFmpeg 安装包全攻略:gpl、lgpl、shared、master 区别详解
  • spring注解旁路问题讨论
  • 使用Python在PowerPoint中插入形状(Shape)
  • 技术文档的进阶之旅
  • 文章记单词 | 第107篇(六级)
  • 3par persona设置错误,linux I/O持续报错
  • mPLUG-Owl3图片描述
  • SQL实战之索引优化(单表、双表、三表、索引失效)
  • FFplay 播放原始数据
  • C++性能测试工具——sysprof的使用
  • 【AUTOSAR网络管理】T_NM_Timeout参数测试指南
  • 【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(4)
  • 强化学习鱼书(8)——DQN
  • Qt window frame + windowTitle + windowIcon属性(3)
  • Android11以上通过adb复制文件到内置存储让文件管理器可见
  • 实验13 数据库权限管理
  • 告别繁琐操作,一键批量发布!
  • Linux下MySQL的安装与使用
  • 开局插第一个眼侦查对方打野的动态
  • 人脸识别技术合规备案最新政策详解
  • 利用条件编译实现RTT可控的调试输出
  • 20250523-BUG-E1696:无法打开元数据文件“platform.winmd(已解决)
  • 写起来比较复杂的深搜题目
  • 差分数组一文全解析
  • Vue.js教学第十三章:深入解析Vuex,前端状态管理核心指南
  • 分布式事务之Seata
  • 根据YOLO数据集标签计算检测框内目标面积占比(YOLO7-10都适用)
  • Linux常用命令简介