⭐️⭐️⭐️
# 題目敘述
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.
# 解題思路
# Solution
import java.util.ArrayList; | |
import java.util.List; | |
class Solution { | |
public int maxLength(List<String> arr) { | |
List<Integer> list = new ArrayList<>(); | |
list.add(0); | |
int res = 0; | |
for (String str : arr) { | |
int strValue = 0, checkSame = 0; | |
for (char c : str.toCharArray()) { | |
checkSame |= strValue & (1 << (c - 'a')); | |
strValue |= 1 << (c - 'a'); | |
} | |
if (checkSame > 0) | |
continue; | |
for (int i = list.size() - 1; i >= 0; i--) { | |
if ((list.get(i) & strValue) > 0) | |
continue; | |
list.add(list.get(i) | strValue); | |
res = Math.max(res, Integer.bitCount(list.get(i) | strValue)); | |
} | |
} | |
return res; | |
} | |
} |
單字
** **
!! !!
片語 & 搭配詞
!! !!