题目:
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。
为了方便,所有26个英文字母对应摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给定一个单词列表,每个单词可以写成每个字母对应摩尔斯密码的组合。例如,"cab"可以写成 "-.-.-....-",(即"-.-." + "-..." + ".-"字符串的结合)。我们将这样一个连接过程称作单词翻译。
返回我们可以获得所有词不同单词翻译的数量。
分析:
难点在于如何计算不重复翻译的数量,本题的解决办法参考了:https://blog.youkuaiyun.com/tanlangqie/article/details/78755665
set()函数可以将列表中的元素无重复的抽取出来。
def mosimima(a):
qq = list(str('abcdefghijklmnopqrstuvwxyz')) #分割字符串
mima = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
h = []
for i in range(0,len(a)):
b = list(str(a[i]))
d = []
for j in range(0,len(b)):
d.append(mima[qq.index(b[j])]) #拼接字符串
h.append(''.join(d))
#set()可将列表中的元素无重复的抽取出来,赋值给另一个列表
return(len(set(h)))
运行结果:
注:本题目来源于:https://mp.weixin.qq.com/s/vbP4MSYUxx58cI5k1jxjrA
本题的难点解决办法参考了:https://blog.youkuaiyun.com/tanlangqie/article/details/78755665
本题由笔者自己思考并编写代码实现,如有错误,欢迎指出。