一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情
测试岗位也越来卷了,除了基本的功能测试外,还要有编程基础、脚本经验才脱颖而出。
怎么才能提高我们的编程能力呢,刷LeetCode是最佳的途径之一,话不多数,刷题走起~
一、题目描述:
-
题目内容
-
题目示例
-
题目解析
- 本题给出words列表,元素由小写字母的单词组成
- 要求对Words列表每一个单词进行摩尔福斯编码,返回不同编码的数量。
二、思路分析:
我们拿到本题,要求我们模拟摩尔福斯编码的过程,手动模拟单词编码过程是这样的:
- 取出单词的每一个字母
- 在摩尔福斯密码中一一找到对应字母的编码字符。如a字母对应的编码是".-"
- 然后将找到的编码组合在一起,就完成了一个单词的编码。如"gin" -> "--...-."
对于一个单词的编码过程有了清晰地认识,那么题目给出的words单词列表也很容易的实现了。
- 首先遍历words列表,取出每一个单词
- 对取出的单词,再使用for循环取出单词的每一个字母
- 由于题目给出了摩尔福斯26个字母的编码列表,因此可以通过字母的ASCII码与A字母ASCII码相减,就计算出字母的所在的位置。
- 取出的编码,通过字符串进行拼接,添加到临时列表morse里。
- 最后遍历完所有的Words列表单词,将临时列表morse转换成集合去掉重复元素,即结果就是集合的长度。
我们通过,画图来模拟以上思路吧:
根据上述思路分析,使用Python很容易实现。代码如下:
class Solution(object):
def uniqueMorseRepresentations(self, words):
"""
:type words: List[str]
:rtype: int
"""
MORSE = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
morse = []
for word in words:
S = ""
for i in range(len(word)):
tmp = ord(word[i]) - 97
S = S + MORSE[tmp]
print(S)
morse.append(S)
return len(set(morse))
三、总结:
本题,考察是字符串遍历拼接操作,AC记录:
时间复杂度O(S),S是words列表所有单词的长度。 空间复杂度O(S),S是words列表所有单词的长度。
以上是本期内容,欢迎大佬们点赞评论,下期见~~