编写函数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 ''
答案 0 :(得分:2)
你可以使用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')
''
答案 1 :(得分:1)
您可以使用set intersection
>>> ''.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'
答案 2 :(得分:1)
如果您想要更正您的解决方案,那么问题是您返回找到的第一个常用字母。你必须继续搜索常用字母并将它们组合成一个结果:
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
的解决方案可能会更快,尤其是在检查长词时。
答案 3 :(得分:0)
RewriteRule ^player-score/([^/.]+)/([^/.]+)/?$ player-score.php?id=$1&card=$2 [QSA,NC,L]
说明:
>>> ''.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. )
:对常用字母进行排序(按字母顺序排列)。sorted( 2. )
:创建一个字符串,用空格连接公共字母(不重复)。