• 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 }
  • 相关阅读:
    思考--连续的还是跳跃的?(二)
    方法学导论--by 有只茄子
    时空、维度,以及其他(一)
    处理问题的方法--抽象和特例化
    tomcat server 152主机.xml
    java怎么重写覆盖Spring Bean的几种方式
    maven上传jar到私服
    sql_mode=only_full_group_by
    spring何时创建bean
    mysql 快速备份数据库
  • 原文地址:https://www.cnblogs.com/skillking/p/9885896.html
Copyright © 2020-2023  润新知