zoukankan      html  css  js  c++  java
  • Leetcode 211.添加与搜索单词

    添加与搜索单词

    设计一个支持以下两种操作的数据结构:

    void addWord(word)

    bool search(word)

    search(word) 可以搜索文字或正则表达式字符串,字符串只包含字母 . 或 a-z 。 . 可以表示任何一个字母。

    示例:

    addWord("bad")

    addWord("dad")

    addWord("mad")

    search("pad") -> false

    search("bad") -> true

    search(".ad") -> true

    search("b..") -> true

    说明:

    你可以假设所有单词都是由小写字母 a-z 组成的。

     1 public class WordDictionary{
     2     public static class TrieNode{
     3         TrieNode[] children;
     4         boolean isLeaf;
     5         public TrieNode(){
     6             children=new TrieNode[26];
     7         }
     8     }
     9 
    10     private TrieNode root=new TrieNode();
    11     public void addWord(String word){
    12         if(word==null||word.isEmpty()) return;
    13         TrieNode node=root;
    14         for(int i=0;i<word.length();i++){
    15             int j=word.charAt(i)-'a';
    16             if(node.children[j]==null){
    17                 node.children[j]=new TrieNode();
    18             }
    19             node=node.children[j];
    20         }
    21         node.isLeaf=true;
    22     }
    23 
    24     public boolean search(String word){
    25         return search(root,word,0);
    26     }
    27 
    28     private boolean search(TrieNode node,String word,int start){
    29         if(node==null) return false;
    30         if(start==word.length()) return node.isLeaf;
    31         for(int i=start;i<word.length();i++){
    32             char c=word.charAt(i);
    33             if(c=='.'){
    34                 for(int j=0;j<26;j++){
    35                     if(search(node.children[j],word,i+1)) return true;
    36                 }
    37                 return false;
    38             }else{
    39                 return search(node.children[c-'a'],word,i+1);
    40             }
    41         }
    42         return false;
    43     }
    44 }
  • 相关阅读:
    集合及特殊集合arrayList
    二维数组、多维数组
    一维数组

    for循坏的穷举与迭代,while、do while循环
    1.兔子生兔子问题2.打印菱形3.求100以内质数的和
    for循环嵌套
    复习题
    循环语句
    分支语句
  • 原文地址:https://www.cnblogs.com/kexinxin/p/10203032.html
Copyright © 2011-2022 走看看