[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");

 

转载于:https://www.cnblogs.com/easonliu/p/4852129.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值