假设我们有一个单词列表,每个单词都可以写成每个字母的摩尔斯电码的串联形式。例如,单词“ cba”可以写为“ -.-..--...”,这是串联“ -.-。”。| “ -...” | “ .-”)。这种级联称为单词转换。
我们知道国际摩尔斯电码定义了一种标准编码,其中每个字母都映射到一系列点和破折号,如下所示:“ a”映射到“ .-”,“ b”映射到“ -...”,“ c ”映射到“ -.-。”,依此类推。
这是英文字母的所有26个字母的列表如下-
[“ .-”,“ -...”,“ -.-。”,“-..”,“。”,“ ..-。”,“-。”,“ ....”, “ ..”,“ .---”,“ -.-”,“ .- ..”,“-”,“-。”,“ ---”,“ .--。”,“- -.-“,” .-。“,” ...“,”-“,” ..-“,” ...-“,” .--“,” -..-“,”-。 -“,”-..“]
因此,如果输入类似于[“ gin”,“ zen”,“ gig”,“ msg”],则输出将为2,因为每个单词的转换为:“ gin”将为“-。”。 .-。”,“ zen”将是“ --...-。” “演出”将是“ --...--”。而“ msg”将是“ --...--。”。
为了解决这个问题,我们将遵循以下步骤-
morse_codes:= [“ .-”,“ -...”,“ -.-。”,“-..”,“。”,“ ..-。”,“-。”,“ ... 。“,” ..“,” .---“,” -.-“,” .- ..“,”-“,”-。“,” ---“,” .--。“ ,“ --.-”,“ .-。”,“ ...”,“-”,“ ..-”,“ ...-”,“ .--”,“ -..-”, “ -.--”,“-..”]
s:=新集
对于单词中的每个单词,
temp:= temp + morse_codes [ASCII的c-97]
temp:=空字符串
对于单词中的每个c,
将temp添加到s
s的返回大小
让我们看下面的实现以更好地理解-
class Solution: def uniqueMorseRepresentations(self, words): morse_codes=[".-","-...","-.-.","-..",".","..-.","-- .","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".- .","...","-","..-","...-",".--","-..-","-.--","--.."] s=set() for word in words: temp='' for c in word: temp+=morse_codes[ord(c)-97] s.add(temp) return len(s) ob = Solution()print(ob.uniqueMorseRepresentations(["gin", "zen", "gig", "msg"]))
["gin", "zen", "gig", "msg"]
输出结果
2