欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

相关标签: python