用两个单词得到普通字母而不重复

时间:2015-07-31 10:32:49

标签: python

编写函数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 '' 

4 个答案:

答案 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]

说明:

  1. >>> ''.join(sorted(set([letter for letter in word1 if letter in word2]))) :对[letter for letter in word1 if letter in word2]中的字母进行迭代,并检查当前字母是否包含在word1中。如果是这样,请将其添加到常用字母列表中(带有重复项)。
  2. word2:通过创建常用字母列表中的一组来删除重复项。
  3. set( 1. ):对常用字母进行排序(按字母顺序排列)。
  4. sorted( 2. ):创建一个字符串,用空格连接公共字母(不重复)。