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

Java | Leetcode Java题解之第212题单词搜索II

题目:

题解:

class Solution {int[][] dirs = {{1, 0}, {-1, 0}, {0, 1}, {0, -1}};public List<String> findWords(char[][] board, String[] words) {Trie trie = new Trie();for (String word : words) {trie.insert(word);}Set<String> ans = new HashSet<String>();for (int i = 0; i < board.length; ++i) {for (int j = 0; j < board[0].length; ++j) {dfs(board, trie, i, j, ans);}}return new ArrayList<String>(ans);}public void dfs(char[][] board, Trie now, int i1, int j1, Set<String> ans) {if (!now.children.containsKey(board[i1][j1])) {return;}char ch = board[i1][j1];Trie nxt = now.children.get(ch);if (!"".equals(nxt.word)) {ans.add(nxt.word);nxt.word = "";}if (!nxt.children.isEmpty()) {board[i1][j1] = '#';for (int[] dir : dirs) {int i2 = i1 + dir[0], j2 = j1 + dir[1];if (i2 >= 0 && i2 < board.length && j2 >= 0 && j2 < board[0].length) {dfs(board, nxt, i2, j2, ans);}}board[i1][j1] = ch;}if (nxt.children.isEmpty()) {now.children.remove(ch);}}
}class Trie {String word;Map<Character, Trie> children;boolean isWord;public Trie() {this.word = "";this.children = new HashMap<Character, Trie>();}public void insert(String word) {Trie cur = this;for (int i = 0; i < word.length(); ++i) {char c = word.charAt(i);if (!cur.children.containsKey(c)) {cur.children.put(c, new Trie());}cur = cur.children.get(c);}cur.word = word;}
}
http://www.lryc.cn/news/389729.html

相关文章:

  • Flink面试题总结
  • 人工智能与云计算
  • 9.(vue3.x+vite)修改el-input,el-data-picker样式
  • java反射和注解
  • react_后台管理_项目
  • 【C语言】使用C语言编写并使用gcc编译动态链接库
  • 使用supportFragmentManager管理多个fragment切换
  • 开源模型应用落地-FastAPI-助力模型交互-WebSocket篇(六)
  • 独立开发者系列(17)——MYSQL的常见异常整理
  • 【ajax实战02】数据管理网站—验证码登录
  • 人工智能在反无人机中的应用介绍
  • 【力扣 - 每日一题】3115. 质数的最大距离(一次遍历、头尾遍历、空间换时间、埃式筛、欧拉筛、打表)Golang实现
  • 【Gin】项目搭建 一
  • C++ 和C#的差别
  • Vue2组件传值(通信)的方式
  • 【数据结构 - 时间复杂度和空间复杂度】
  • telegram支付
  • elasticsearch-6.8.23的集群搭建过程
  • javascript输出语法
  • 仓库管理系统26--权限设置
  • d3dx9_43.dll丢失怎么解决?d3dx9_43.dll怎么安装详细教程
  • [C++] 退出清理函数解读(exit、_exit、abort、atexit)
  • 代码随想录(回溯)
  • 编译原理1
  • 【信息系统项目管理师知识点速记】组织通用管理:流程管理
  • 前端 JS 经典:箭头函数的意义
  • Java List操作详解及常用方法
  • 《mysql篇》--查询(进阶)
  • 数据库-MySQL 实战项目——书店图书进销存管理系统数据库设计与实现(附源码)
  • eNSP中WLAN的配置和使用