该程序在Python中查找非共享单词的最大长度

假设我们有一个称为单词的小写字母字符串列表,我们必须找到两个不共享共同字母的不同单词的最大长度总和。因此,如果输入类似于单词= [“ abcd”,“ mno”,“ abdcmno”,“ amno”],则输出将为7,因为不共享任何常见字母的单词是[“ abcd”,“ mno“],总长度为7。

为了解决这个问题,我们将遵循以下步骤-

  • 定义一个功能sign()。这将成为事实

  • 值:= 0

  • 对于单词中的每个c

    • 值:=值或(2 ^(c的ASCII-'a'的ASCII))

  • 返回值

  • 在主要方法中,执行以下操作

  • 签名:=单词中每个x带有符号(x)的列表

  • 回答:= 0

  • 对于范围在0至字数范围内的我,

    • 如果签名[i]和签名[j]等于0,则

    • ans:= ans的最大值和单词的大小[i] +单词的大小[j]

    • 对于范围i + 1到字长的j

    • 返回ans

    让我们看下面的实现以更好地理解-

    示例

    class Solution:

       def sign(self, word):

          value = 0

          for c in word:

             value = value | (1 << (ord(c) - 97))

          return value

       def solve(self, words):

          signature = [self.sign(x) for x in words]

          ans = 0

          for i in range(len(words)):

             for j in range(i + 1, len(words)):

                if signature[i] & signature[j] == 0:

                   ans = max(ans, len(words[i]) + len(words[j]))

          return ans

    ob = Solution()words = ["abcd", "mno", "abdcmno", "amno"]

    print(ob.solve(words))

    输入值

    ["abcd", "mno", "abdcmno", "amno"]

    输出结果

    7

    以上是 该程序在Python中查找非共享单词的最大长度 的全部内容, 来源链接: utcz.com/z/338509.html

    回到顶部