[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:
false
true
false
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");
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步