这是Leetcode804:独一无二的莫尔斯电码。我想知道为什么我的代码给出了正确的摩尔斯电码,但它是按字母顺序排序的,这不是故意的。感谢您的任何贡献
输入:
words = ["gin", "zen", "gig", "msg"]
代码:
class Solution:
def uniqueMorseRepresentations(self, words: List[str]) -> int:
morse = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
alphabet = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']
transformation = []
zip_ = list(zip(morse, alphabet))
for word in words:
transformation.append(''.join(code[0] for code in zip_ for letter in word if letter in code[1]))
输出:
['--...-.', '.-.--..', '--.--...', '--.--...']
问题是,您首先遍历zip文件,然后遍历字母。这就是造成字母顺序zip_uu按字母顺序排序的原因
此版本执行您希望它执行的操作:
这并不是最符合python的方式,但它是对您的解决方案的最小修复
就个人而言,我会使用字典将字母映射到摩尔斯电码,然后遍历字符串的字符。这有点类似于https://stackoverflow.com/users/6553328/emma的解决方案,但对于不知道字符整数值的人来说更容易阅读
不确定您所面临的问题,这将通过:
97是
ord('a')
:我在您的解决方案中没有看到
return
语句或set()
。有两个简单的步骤:如果您感兴趣,这里还有一个使用哈希集的Java版本(类似于Python中的
set()
):参考资料
相关问题 更多 >
编程相关推荐