745. Prefix and Suffix Search

来源:互联网 发布:新材料在线软件 编辑:程序博客网 时间:2024/06/06 08:29

原网址为 https://leetcode.com/problems/prefix-and-suffix-search/description/

Given many wordswords[i] has weight i.

Design a class WordFilter that supports one function, WordFilter.f(String prefix, String suffix). It will return the word with given prefix and suffix with maximum weight. If no word exists, return -1.

Examples:

Input:WordFilter(["apple"])WordFilter.f("a", "e") // returns 0WordFilter.f("b", "") // returns -1

Note:

  1. words has length in range [1, 15000].
  2. For each test case, up to words.length queries WordFilter.f may be made.
  3. words[i] has length in range [1, 10].
  4. prefix, suffix have lengths in range [0, 10].
  5. words[i] and prefix, suffix queries consist of lowercase letters only.

代码:

class TrieNode {public:    TrieNode() {        children.resize(27, NULL);        weight = 0;    }public:    vector<TrieNode*> children;    int weight;};class WordFilter {public:    WordFilter(vector<string> words) {        root = new TrieNode();        for (int weight = 0; weight < words.size(); weight++) {            string word = words[weight] + "{";            for (int i = 0; i < word.size(); i++) {                TrieNode *cur = root;                cur->weight = weight;                for (int j = i; j < 2 * word.size() - 1; j++) {                    int k = word[j % word.size()] - 'a';                    if (cur->children[k] == NULL) {                        cur->children[k] = new TrieNode();                    }                    cur = cur->children[k];                    cur->weight = weight;                                    }            }        }    }        int f(string prefix, string suffix) {        TrieNode *cur = root;        string q = suffix + "{" + prefix;        for (int i = 0; i < q.size(); i++) {            if (cur->children[q[i] - 'a'] == NULL) {                return -1;            }            cur = cur->children[q[i] - 'a'];        }        return cur->weight;    }public:    TrieNode *root;};


阅读全文
0 0
原创粉丝点击