java开发单词的唯一缩写(哈希)
程序员文章站
2023-01-23 09:33:30
文章目录1. 题目2. 解题1. 题目一个单词的缩写需要遵循 <起始字母><中间字母数><结尾字母> 这样的格式。以下是一些单词缩写的范例:a) it --> it (没有缩写) 1 ↓b) d|o|g --> d1g 1 1 1 1---5----0----5--8 ↓ ↓ ↓...
1. 题目
一个单词的缩写需要遵循 <起始字母><中间字母数><结尾字母> 这样的格式。
以下是一些单词缩写的范例:
a) it --> it (没有缩写) 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
假设你有一个字典和一个单词,请你判断该单词的缩写在这本字典中是否唯一。
若单词的缩写在字典中没有任何 其他 单词与其缩写相同,则被称为单词的唯一缩写。
示例:
给定 dictionary = [ "deer", "door", "cake", "card" ] isUnique("dear") -> false isUnique("cart") -> true isUnique("cane") -> false isUnique("make") -> true
2. 解题
容易错的例子
[[["hello"]],["hello"]] [null,true] [[["a","a"]],["a"]] [null,true]
- 长度小于等于2的直接true
- 对转换后的 key 计数
class ValidWordAbbr { unordered_map<string, int> m; unordered_set<string> dict; string key; public: ValidWordAbbr(vector<string>& dictionary) { for(auto& d : dictionary) { if(d.size()<=2) continue; m[getkey(d)]++; dict.insert(d); } } bool isUnique(string word) { if(word.size() <= 2) return true; key = getkey(word); if((dict.count(word) && (m[key] == 1)) || m.find(key) == m.end()) return true; else return false; } string getkey(string& word) { key = word[0]+to_string(word.size()-2)+word[word.size()-1]; return key; } };
296 ms 48.2 MB
本文地址:https://blog.csdn.net/qq_21201267/article/details/107092387