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

    Problem Description:

    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 

    To check for unique abbreviation, we maintain a mapping from a specific abbreviation to all words which have the abbreviation. Then we just need to check no other words have the same abbreviation as the given word.

    The code is as follows.

    class ValidWordAbbr {
    public:
        ValidWordAbbr(vector<string> &dictionary) {
            for (string& d : dictionary) {
                int n = d.length();
                string abbr = d[0] + to_string(n) + d[n - 1];
                mp[abbr].insert(d);
            }
        }
    
        bool isUnique(string word) {
            int n = word.length();
            string abbr = word[0] + to_string(n) + word[n - 1];
            return mp[abbr].count(word) == mp[abbr].size(); 
        }
    private:
        unordered_map<string, unordered_set<string>> mp;
    };
    
    
    // Your ValidWordAbbr object will be instantiated and called as such:
    // ValidWordAbbr vwa(dictionary);
    // vwa.isUnique("hello");
    // vwa.isUnique("anotherWord"); 
  • 相关阅读:
    git获取远程路径
    qt 运行直接运行exe文件
    QML动画和过度
    学习网络编程的十个步骤
    vs中设置中断
    qt出现警告 Unescaped backslashes are deprecated!解决办法
    git把某此提交运用到某个分支上
    qml学习文档转载
    git远程分支的创建与推送
    qml实现折叠框
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4851799.html
Copyright © 2011-2022 走看看