zoukankan      html  css  js  c++  java
  • 211. Add and Search Word

    一、题目

      1、审题

      

      2、分析

        与208不同的是, search() 方法可以传入的单词可以包含 '.' ,代表任意一个字符。

    二、解答

      1、思路:

        采用 DFS 方式,当查找单词中字符为 '.' 时,从当前 Trie 节点的所有非空子节点开始查找一次,若有一个返回成功,则为 true;若都失败,则 false;

     1 class WordDictionary {
     2 
     3     private TrieNode root;
     4     /** Initialize your data structure here. */
     5     public WordDictionary() {
     6         root = new TrieNode();
     7     }
     8     
     9     /** Adds a word into the data structure. */
    10     public void addWord(String word) {
    11         TrieNode node = root;
    12         for (int i = 0; i < word.length(); i++) {
    13             char c = word.charAt(i);
    14             if(node.children[c - 'a'] == null)
    15                 node.children[c - 'a'] = new TrieNode();
    16             node = node.children[c - 'a'];
    17         }
    18         node.isWord = true;
    19     }
    20     
    21     /** Returns if the word is in the data structure. A word could contain the dot character '.' to represent any one letter. */
    22     public boolean search(String word) {
    23         return search(word, root);
    24     }
    25 
    26     private boolean search(String word, TrieNode node) {
    27         for (int i = 0; i < word.length(); i++) {
    28             char c = word.charAt(i);
    29             // 处理 '.'
    30             if(c == '.') {
    31                 for(TrieNode child: node.children) {
    32                     if(child == null)
    33                         continue;
    34                     if(search(word.substring(i+1), child))
    35                         return true;
    36                 }
    37                 return false;
    38             }
    39             if(node.children[c - 'a'] == null)
    40                 return false;
    41             node = node.children[c - 'a'];
    42         }
    43         return node.isWord;
    44     }
    45 }
  • 相关阅读:
    springboot整合mybatisplus
    在layui中使用treetable.js插件
    shiro系列9:基于前端的权限控制和基于后端的权限控制
    springboot文件上传案例
    springboot配置虚拟路径访问上传到磁盘的文件
    springboot文件下载案例
    springboot跨域的处理方式
    springboot上传文件过大的解决方案
    Django与Ajax
    Django查询数据库性能优化
  • 原文地址:https://www.cnblogs.com/skillking/p/9885896.html
Copyright © 2011-2022 走看看