Skip to content

Commit 74b9427

Browse files
authored
1239
1 parent cc291fd commit 74b9427

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
// Runtime 1ms
2+
// Beats 100.00%
3+
4+
5+
// Memory 41.39MB
6+
// Beats 93.04%
7+
8+
9+
class Solution {
10+
public int maxLength(List<String> arr) {
11+
List<Integer> arr2 = new ArrayList<>();
12+
for(String word: arr) {
13+
int bitSet = str2BitInt4(word);
14+
if (bitSet > 0) arr2.add(str2BitInt4(word));
15+
}
16+
int[] data = new int[arr2.size()];
17+
for (int i = 0; i < data.length; i++)
18+
data[i] = arr2.get(i);
19+
20+
return helper_dfs(data, 0, 0);
21+
}
22+
private int helper_dfs(int[] data, int begin, int bitSet) {
23+
int maxLen = Integer.bitCount(bitSet);
24+
for (int i = begin; i < data.length; i++) {
25+
if ((data[i] | bitSet) == (data[i] ^ bitSet))
26+
maxLen = Math.max(maxLen, helper_dfs(data, i + 1, bitSet | data[i]));
27+
}
28+
return maxLen;
29+
}
30+
31+
private int str2BitInt4(String word){
32+
int x = 0;
33+
for(char c : word.toCharArray()) {
34+
if ((x >> (c - 'a') & 1) == 1) return -1;
35+
x |= 1 << c - 'a';
36+
}
37+
return x;
38+
}
39+
}

0 commit comments

Comments
 (0)