zoukankan      html  css  js  c++  java
  • leetcode 745 Prefix and Suffix Search

     
        var WordFilter = function (words) {
          this.trie = {}, idx = 0;
          for (let word of words) {
            let m = word.length;
            let paths = [];
            for (let i = 0; i <= m; i++) {
              this.buildTrie(word.substr(m - i, m) + '_' + word, idx);
            }
            idx++
          }
        };
    
    
        WordFilter.prototype.buildTrie = function (str, weight) {
          console.log(str)
          let trie = this.trie;
          let flag = false;
          for (let path of str) {
            if (!trie[path]) {
              trie[path] = {}
            }
            if (path === '_') flag = true;
            trie = trie[path];
            trie.weight = flag ? weight : trie.weight;
          }
        }
    
        /** 
         * @param {string} prefix 
         * @param {string} suffix
         * @return {number}
         */
        WordFilter.prototype.f = function (prefix, suffix) {
          let paths = suffix + '_' + prefix;
          let trie = this.trie;
          for (let path of paths) {
            if (!trie[path]) return -1;
            trie = trie[path];
          }
          return trie.weight;
        };
    
    
        var trie = new WordFilter(['apple']);
        console.log(trie.f("a", "e"))// returns 0
        console.log(trie.f("b", ""))
        console.log(trie.f("ap", "le"))
    
  • 相关阅读:
    信息量
    MVC4的实战:排球计分(一)(综述)
    排球计分规则3.17
    观后感-----怎样成为一个高手
    本学期最后一个博客
    第五组作业
    个人作业
    第五组作业
    个人作业
    一周的总结
  • 原文地址:https://www.cnblogs.com/rubylouvre/p/12116957.html
Copyright © 2011-2022 走看看