zoukankan      html  css  js  c++  java
  • [LeetCode] Unique Word Abbreviation

    Unique Word Abbreviation

    An abbreviation of a word follows the form <first letter><number><last letter>. Below are some examples of word abbreviations:

    a) it                      --> it    (no abbreviation)
    
         1
    b) d|o|g                   --> d1g
    
                  1    1  1
         1---5----0----5--8
    c) i|nternationalizatio|n  --> i18n
    
                  1
         1---5----0
    d) l|ocalizatio|n          --> l10n
    

    Assume you have a dictionary and given a word, find whether its abbreviation is unique in the dictionary. A word's abbreviation is unique if no other word from the dictionary has the same abbreviation.

    Example: 

    Given dictionary = [ "deer", "door", "cake", "card" ]
    
    isUnique("dear") -> false
    isUnique("cart") -> true
    isUnique("cane") -> false
    isUnique("make") -> true
     1 class ValidWordAbbr {
     2 private:
     3     unordered_map<string, int> m_map;
     4     unordered_set<string> m_set;
     5 public:
     6     ValidWordAbbr(vector<string> &dictionary) {
     7         for (auto word : dictionary) {
     8             m_set.insert(word);
     9             if (word.length() == 2) ++m_map[word];
    10             else ++m_map[word.front() + to_string(word.length() - 2) + word.back()];
    11         }
    12     }
    13 
    14     bool isUnique(string word) {
    15         string key;
    16         if (word.length() == 2) key = word;
    17         else key = word.front() + to_string(word.length() - 2) + word.back();
    18         if (m_set.find(word) == m_set.end()) return m_map[key] < 1;
    19         else return m_map[key] < 2;
    20     }
    21 };
    22 
    23 
    24 // Your ValidWordAbbr object will be instantiated and called as such:
    25 // ValidWordAbbr vwa(dictionary);
    26 // vwa.isUnique("hello");
    27 // vwa.isUnique("anotherWord");
  • 相关阅读:
    [ 随手记 4 ]C/C++ 模板(Template)使用/重载区别
    [ 随手记 3 ] 堆区/栈区/堆栈/队列
    [ 随手记 2 ] C/C++ 数组/指针/传数组到函数/指针数组/数组指针
    柯西方程的另外一种解法
    十分强大的CC抛物线定理(数学)
    模板_BIT
    模板_SEG_TREE
    模板_SPLAY
    模板_LCA
    NOIP游(GUNCU)记
  • 原文地址:https://www.cnblogs.com/easonliu/p/4852129.html
Copyright © 2011-2022 走看看