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"); 
  • 相关阅读:
    element-ui 中Message 消息提示
    MYSQL 常用语法格式
    python 爬取必应每日图片
    linux:文件权限管理
    如何建立自我学习的"触发机制"?
    总有那么一些人,把自己的思想强加给别人
    linux 控制history命令历史记录
    linux apt-get 安装与卸载命令
    ubuntu16.04下 安装java8
    历史与过去是一面镜子,它照到的是你现在的自己
  • 原文地址:https://www.cnblogs.com/jcliBlogger/p/4851799.html
Copyright © 2011-2022 走看看