该程序在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