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

Golang | Leetcode Golang题解之第472题连接词

题目:

题解:

type trie struct {children [26]*trieisEnd    bool
}func (root *trie) insert(word string) {node := rootfor _, ch := range word {ch -= 'a'if node.children[ch] == nil {node.children[ch] = &trie{}}node = node.children[ch]}node.isEnd = true
}func (root *trie) dfs(vis []bool, word string) bool {if word == "" {return true}if vis[len(word)-1] {return false}vis[len(word)-1] = truenode := rootfor i, ch := range word {node = node.children[ch-'a']if node == nil {return false}if node.isEnd && root.dfs(vis, word[i+1:]) {return true}}return false
}func findAllConcatenatedWordsInADict(words []string) (ans []string) {sort.Slice(words, func(i, j int) bool { return len(words[i]) < len(words[j]) })root := &trie{}for _, word := range words {if word == "" {continue}vis := make([]bool, len(word))if root.dfs(vis, word) {ans = append(ans, word)} else {root.insert(word)}}return
}

http://www.mrgr.cn/news/47601.html

相关文章:

  • 基于cookie共享实现单点登录
  • 预训练语言模型——BERT
  • MySQL 数据表与索引设计艺术:打造高效数据存取架构
  • 基于 gitlab-runner 实现调度GPU的资源
  • 音视频入门基础:MPEG2-PS专题(6)——FFmpeg源码中,获取PS流的视频信息的实现
  • Unity3d 基于Barracuda推理库和YOLO算法实现对象检测功能
  • 什么是事务
  • Redis 其他类型 渐进式遍历
  • oracle set命令
  • 探索高效的 PDF 拆分工具及其独特功能
  • CSS @规则(At-rules)系列详解___@charset规则使用方法
  • linux上给磁盘分区和格式化分区
  • C++ | Leetcode C++题解之第472题连接词
  • set有哪些实现类?
  • 【C语言】计算需要的缓冲区大小
  • ARM知识点三和串口代码的编写流程
  • 毕业设计选题:基于php+vue+uniapp的新闻资讯小程序
  • 5.C语言基础入门:数据类型、变量声明与创建详解
  • Java | Leetcode Java题解之第470题用Rand7()实现Rand10()
  • 使用 Raspberry Pi Pico W 的基于 MQTT 的分布式网络自适应估计
  • Java | Leetcode Java题解之第472题连接词
  • 【CSS in Depth 2 精译_047】7.2 CSS 响应式设计中的媒体查询原则(上):深入理解媒体查询的类型
  • QTableView-mode中嵌入复选框CheckBox
  • 编程思想:编程范式:响应式编程
  • 快速解决urllib3.exceptions.MaxRetryError: HTTPSConnectionPool
  • Unity网络开发 - C#开源网络通信库PESocket的使用