Python中查找唯一字符串的长度组合的程序?
假设我们有一个字符串列表 words。我们必须构造一个字符串,该字符串由连接子序列的单词构成,使得每个字母都是唯一的。我们最终必须找到最长的连接长度。
因此,如果输入如下 words = [“xyz”, “xyw”, “wab”, “cde”],则输出将为 9,因为我们无法选择任何单词,因为它们包含重复字符。
为了解决此问题,我们将按照以下步骤进行操作:
ans = 0
定义一个函数 recur()。这将采用 i:= 0, cur:= 空字符串
如果i与words的大小相同,则
ans:= ans和cur大小的最大值
回报
recur(i + 1,cur)
如果words[i]中的所有字符都是唯一的,而(cur + words[i])中的所有字符也都是唯一的,则
recur(i + 1,cur + words[i])
从主要方法中执行以下操作:
recur()
返回ans
让我们看下面的实现,以更好地理解:
例子
class Solution:
def solve(self, words):
ans = 0
def is_all_unique(s):
return len(set(s)) == len(s)
def recur(i=0, cur=""):
nonlocal ans
if i == len(words):
ans = max(ans, len(cur))
return
recur(i + 1, cur)
if is_all_unique(words[i]) and is_all_unique(cur + words[i]):
recur(i + 1, cur + words[i])
recur()
return ans
ob = Solution()
words = ["xyz", "xyw", "wab", "cde"]
print(ob.solve(words))
输入
["xyz", "xyw", "wab", "cde"]
输出
9