<Trie> 212
时间:2019-11-29
本文章向大家介绍<Trie> 212,主要包括<Trie> 212使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
212. Word Search II
class TrieNode{ char val; TrieNode[] children; String word; public TrieNode(char x){ children = new TrieNode[26]; word = null; } } class Solution { public List<String> findWords(char[][] board, String[] words) { List<String> res = new ArrayList<>(); if(board == null || board.length == 0) return res; TrieNode root = new TrieNode(' '); buildTrie(root, words); for(int i = 0; i < board.length; i++){ for(int j = 0; j < board[0].length; j++){ char c = board[i][j]; if(root.children[c - 'a'] != null){ dfs(board, i, j, root, res); } } } return res; } private void buildTrie(TrieNode root, String[] words){ for(String s : words){ TrieNode cur = root; for(char c : s.toCharArray()){ if(cur.children[c - 'a'] == null){ cur.children[c - 'a'] = new TrieNode(c); } cur = cur.children[c - 'a']; } cur.word = s; } } private void dfs(char[][] board, int i, int j, TrieNode cur, List<String> res){ if(i < 0 || i >= board.length || j < 0 || j >= board[0].length) return; char c = board[i][j]; if(c == '*') return; if(cur.children[c - 'a'] == null) return; cur = cur.children[c - 'a']; if(cur.word != null){ res.add(cur.word); cur.word = null; } board[i][j] = '*'; dfs(board, i + 1, j, cur, res); dfs(board, i - 1, j, cur, res); dfs(board, i, j + 1, cur, res); dfs(board, i, j - 1, cur, res); board[i][j] = c; } }
原文地址:https://www.cnblogs.com/Afei-1123/p/11957715.html
- 使用PowerShell简化我的工作
- 几个提高工作效率的Python内置小工具
- J2EE相关总结
- (53) 剖析Collections - 算法 / 计算机程序的思维逻辑
- Flask使用Blueprint进行多模块应用的编写
- 优雅的在终端中编写Python
- Eclipse相关问题
- (54) 剖析Collections - 设计模式 / 计算机程序的思维逻辑
- Django 博客教程(三):创建应用和编写数据库模型
- package-info.java文件详解
- 在Spring下集成ActiveMQ
- Java中只有按值传递,没有按引用传递!
- 我是如何使用Python来自动化我的婚礼的
- left join 过滤条件写在on后面和写在where 后面的区别
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Python json格式化打印实现过程解析
- PHP使用DOM对XML解析处理操作示例
- OpenCV Python实现图像指定区域裁剪
- Laravel框架实现多个视图共享相同数据的方法详解
- python如何快速生成时间戳
- 从python读取sql的实例方法
- PHP+iframe模拟Ajax上传文件功能示例
- Centos7 Yum安装PHP7.2流程教程详解
- PHP session垃圾回收机制实例分析
- thinkphp5框架调用其它控制器方法 实现自定义跳转界面功能示例
- Python常用库Numpy进行矩阵运算详解
- PHP设计模式之建造者模式(Builder)原理与用法案例详解
- PHP大文件切割上传并带进度条功能示例
- PHP设计模式之观察者模式入门与应用案例详解
- Python文件夹批处理操作代码实例