-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path1239.maximum-length-of-a-concatenated-string-with-unique-characters.py
98 lines (76 loc) · 2.8 KB
/
1239.maximum-length-of-a-concatenated-string-with-unique-characters.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
from lc import *
class Solution:
def maxLength(self, arr: List[str]) -> int:
dp = [set()]
for a in arr:
if len(set(a)) < len(a):
continue
a = set(a)
for c in dp[:]:
if a & c: continue
dp.append(a | c)
return max(len(a) for a in dp)
# https://leetcode.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/discuss/1479802/Python-3-one-line
class Solution:
def maxLength(self, arr: List[str]) -> int:
p = {''}
for s in arr:
if len(set(s)) == len(s):
p |= {s + x for x in p if not (set(s) & set(y))}
return max(map(len, p))
class Solution:
def maxLength(self, a: List[str]) -> int:
return max(map(len,reduce(lambda p,s:p|{s+x for x in p if not(len({*s})<len(s)or{*s}&{*x})},a,{''})))
class Solution:
def maxLength(self, a: List[str]) -> int:
p={''};[p:=p|{s+x for x in p if not(len({*s})<len(s)or{*s}&{*x})}for s in a];return max(map(len,p))
# https://leetcode.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/discuss/4611439/DFS-Python
class Solution:
def maxLength(self, a: List[str]) -> int:
def f(i,s):
r = len(s)
if len(s) != len({*s}):
return 0
for j in range(i, len(a)):
r = max(f(j,s+a[j]),r)
return r
return f(0,'')
class Solution:
def maxLength(self, a: List[str]) -> int:
return(f:=lambda i,s,l=len:l(s)==l({*s})and max(l(s),*[f(j,s+a[j])for j in range(i,l(a))]))(0,'')
class Solution:
def maxLength(self, a: List[str]) -> int:
return max(len(s)for i in range(17)for c in combinations(a,i)if len(s:='%s'*i%c)==len({*s}))
test('''
1239. Maximum Length of a Concatenated String with Unique Characters
Medium
You are given an array of strings arr. A string s is formed by the concatenation of a subsequence of arr that has unique characters.
Return the maximum possible length of s.
A subsequence is an array that can be derived from another array by deleting some or no elements without changing the order of the remaining elements.
Example 1:
Input: arr = ["un","iq","ue"]
Output: 4
Explanation: All the valid concatenations are:
- ""
- "un"
- "iq"
- "ue"
- "uniq" ("un" + "iq")
- "ique" ("iq" + "ue")
Maximum length is 4.
Example 2:
Input: arr = ["cha","r","act","ers"]
Output: 6
Explanation: Possible longest valid concatenations are "chaers" ("cha" + "ers") and "acters" ("act" + "ers").
Example 3:
Input: arr = ["abcdefghijklmnopqrstuvwxyz"]
Output: 26
Explanation: The only string in arr has all 26 characters.
Example 4:
Input: arr = ["aa","bb"]
Output: 0
Constraints:
1 <= arr.length <= 16
1 <= arr[i].length <= 26
arr[i] contains only lowercase English letters.
''')