Maximum Length of a Concatenated String with Unique Characters LeetCode solution in Java

1
class Solution {
2
public int maxLength(List<String> arr) {
3
String[] words =
4
arr.stream().filter(o -> o.chars().distinct().count() == o.length()).toArray(String[]::new);
5
int[] dp = new int[1 << words.length];
6
int[] ok = new int[1 << words.length];
7
for (int i = 0; i < words.length; i++) {
8
for (char ch : words[i].toCharArray()) {
9
ok[1 << i] |= 1 << (ch - 'a');
10
dp[1 << i]++;
11
}
12
}
13
int ans = 0;
14
for (int i = 0; i < dp.length; i++) {
15
if ((ok[i & (i - 1)] & ok[i & -i]) == 0) {
16
dp[i] = dp[i & (i - 1)] + dp[i & -i];
17
ok[i] = ok[i & (i - 1)] | ok[i & -i];
18
}
19
ans = Math.max(ans, dp[i]);
20
}
21
return ans;
22
}
23
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0