Tuesday, April 26, 2016

LeetCode Q288: Unique Word Abbreviation

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
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");
view raw Q288.cpp hosted with ❤ by GitHub

No comments:

Post a Comment