public boolean search(String s) {
        if (s == null) {
            return false;
        }
        if (s.length() == 0) {
            return true;
        }
        char c = s.charAt(0);
        String sub = s.substring(1);
        if (sub.length() == 0) {
            if (c == '.') {
                for (int i = 0; i != childs.length; i++) {
                    if (childs[i] != null && childs[i].word) {
                        return true;
                    }
                }
                return false;
            }
            return exist(c) && childs[c - 'a'].word;
        } else {
            if (c == '.') {
                for (int i = 0; i != childs.length; i++) {
                    if (childs[i] != null && childs[i].search(sub)) {
                        return true;
                    }
                }
                return false;
            } else {
                return exist(c) && childs[c - 'a'].search(sub);
            }
        }
    }