LinkedIn VO 面试真题解析:电话号码字母映射匹配单词

21次阅读
没有评论

Given the standard mapping from English letters to digits on a phone keypad, write a program that outputs all words that can be formed from an n-digit phone number from the list of given words, considering the mapping mentioned above.

KNOWN_WORDS = ['careers', 'linkedin', 'hiring', 'interview', 'linkedgo']

phoneNumber: 2273377

Output: ['careers']

phoneNumber: 54653346

Output: ['linkedin', 'linkedgo']

这道题的核心是把电话号码和单词之间的字母 - 数字映射关系做反向匹配:先将字典中的每个单词转换成对应的数字串,再判断它是否与输入 phone number 完全一致。最直接的做法是遍历所有候选单词,逐个计算编码并比较,时间复杂度大约是 O(mn),其中 m 是单词数,n 是单词平均长度。若想进一步优化,也可以先建立数字串到单词列表的哈希表,这样查询某个号码时可以直接得到所有匹配单词。

正文完
 0