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

JAVA算法练习题day47

54.实现Trie(前缀和)

class Trie:# 定义26叉树的节点类class TrieNode:def __init__(self):self.son = [None] * 26  # 存储26个子节点(对应a-z)self.end = False         # 标记是否为单词结尾def __init__(self):"""初始化前缀树,根节点为空白节点"""self.root = self.TrieNode()def find(self, word):"""辅助函数:查找字符串在树中的状态返回值:0(未找到)、1(找到但不是结尾)、2(找到且是结尾)"""cur = self.root  # 从根节点开始遍历for c in word:# 计算字符对应的索引(a→0, b→1, ..., z→25)idx = ord(c) - ord('a')# 若当前字符不在子节点中,返回0(未找到)if not cur.son[idx]:return 0# 移动到子节点继续遍历cur = cur.son[idx]# 遍历结束:根据end判断是结尾(2)还是仅前缀(1)return 2 if cur.end else 1def insert(self, word):"""向前缀树插入字符串word"""cur = self.rootfor c in word:idx = ord(c) - ord('a')# 若子节点不存在,创建新节点if not cur.son[idx]:cur.son[idx] = self.TrieNode()# 移动到子节点cur = cur.son[idx]# 标记当前节点为单词结尾cur.end = Truedef search(self, word):"""判断word是否是前缀树中的完整单词"""# 仅当find返回2(找到且是结尾)时返回Truereturn self.find(word) == 2def startsWith(self, prefix):"""判断是否存在以prefix为前缀的单词"""# 只要find返回非0(找到,无论是否结尾)就返回Truereturn self.find(prefix) != 0

http://www.dtcms.com/a/516171.html

相关文章:

  • 服装外包加工网网站排名优化公司
  • linux系统中进程通信之信号
  • 求数字1-10的阶乘
  • 如何使用最简单的get请求融合众多AI API,包括ChatGPT、Grok等
  • 链表的概念和单向链表的实现
  • 2013年下半年试题二:论企业应用系统的分层架构风格
  • U 盘写写保护解决方法
  • 简约手机网站源码兴宁电子商务网站建设
  • 教程网站搭建wordpress二次元风格
  • 02-Vue 插值
  • 【NebulaGraph】Nebula Importer使用
  • 不同形态组织镊在口腔临床的适配性选择
  • 深入理解进程、线程与协程
  • 用IIS自带FTP功能搭一个FTP!
  • 一种简单的Yolov8 onnx模型类别标签获取的方法
  • 用哪个网站做首页好做网站哪里最便宜
  • ROS1+Vscode
  • Ubuntu22.04 中搭建基于 Qemu 的内核(驱动)开发环境
  • JMETER+ANT接口自动化测试环境搭建实战讲解
  • 告别“大力金刚指”:晶尊微触摸芯片让电梯按键一触即灵
  • HTML教程
  • 基于Qt Quick的图像标注与标注数据管理工具
  • vscode搭建python项目隔离的虚拟环境
  • 模版网站有源代码吗wordpress栏目对应模板
  • 海阳市城建设局网站网页价格表
  • 网站建设客户分析调查表wordpress打不开页面
  • JAVA算法练习题day50
  • xss-labs pass-10
  • ArcMap批量修改字段的属性值
  • 龙虎榜——20251022