本文主要是介绍Python每日一编程小练习(2019.05.30)——唯一摩尔斯密码词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
国际摩尔斯密码定义一种标准编码方式,将每个字母对应于一个由一系列点和短线组成的字符串, 比如: "a" 对应 ".-", "b" 对应 "-...", "c" 对应 "-.-.", 等等。
为了方便,所有26个英文字母对应摩尔斯密码表如下:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
给定一个单词列表,每个单词可以写成每个字母对应摩尔斯密码的组合。例如,"cab"可以写成 "-.-.-....-",(即"-.-." + "-..." + ".-"字符串的结合)。我们将这样一个连接过程称作单词翻译。
返回我们可以获得所有词不同单词翻译的数量。
分析:
难点在于如何计算不重复翻译的数量,本题的解决办法参考了:https://blog.csdn.net/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.csdn.net/tanlangqie/article/details/78755665
本题由笔者自己思考并编写代码实现,如有错误,欢迎指出。
这篇关于Python每日一编程小练习(2019.05.30)——唯一摩尔斯密码词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!