[英]To get the common letters in two words without repetition
编写函数getCommonLetters(word1, word2)
,该函数将两个单词作为参数并返回一个新字符串,其中包含两个字符串中都包含的字母。 忽略重复的字母,并按字母顺序对结果进行排序。
例子
>>> getCommonLetters('apple','google')
'el'
>>> getCommonLetters('microsoft','apple')
''
>>> getCommonLetters('microsoft','google')
'o'
我的解决方案如下:
def getCommonLetters(word1, word2):
for letter in word1:
if letter in word2:
#return letter
return ''.join(sorted(letter))
return ''
您可以使用set()
和set相交找到两个集合的共同元素-
def getCommonLetters(word1, word2):
return ''.join(sorted(set(word1) & set(word2)))
&用于set intersection
。
示例/演示-
>>> def getCommonLetters(word1, word2):
... return ''.join(sorted(set(word1) & set(word2)))
...
>>> getCommonLetters('apple','google')
'el'
>>> getCommonLetters('microsoft','apple')
''
您可以使用设置交集
>>> ''.join(set('apple').intersection(set('google')))
'el'
该功能可以定义为
def getCommonLetters(a, b):
return ''.join(sorted(set(a).intersection(set(b))))
例
>>> def getCommonLetters(a, b):
... return ''.join(sorted(set(a).intersection(set(b))))
...
>>> getCommonLetters('google','apple')
'el'
如果您想更正您的解决方案,那么问题是您返回找到的第一个普通字母。 您必须继续搜索常见字母并将它们组合为结果:
def getCommonLetters(word1, word2):
res = ""
for letter in word1:
if letter in word2:
if letter not in res: # skip if we already found it
# don't return yet, but rather accumulate the letters
res = res + letter
return res
建议使用set
的解决方案可以更快,尤其是在检查长单词时。
>>> ''.join(sorted(set([letter for letter in word1 if letter in word2])))
说明:
[letter for letter in word1 if letter in word2]
:迭代word1
的字母,并检查word2
是否包含当前字母。 如果是这样,请将其添加到常用字母列表(含重复项)中。 set( 1. )
:通过在常用字母列表之外创建一个set来删除重复项。 sorted( 2. )
:按字母顺序对常用字母进行排序。 ''.join( 3. )
:创建一个字符串,用空格将普通字母连接起来(不重复)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.