---
# System prepended metadata

title: 'Leetcode [No. 1239] Maximum Length of a Concatenated String with Unique Characters (MEDIUM) 解題心得'
tags: [leetcode]

---

# Leetcode [No. 1239] Maximum Length of a Concatenated String with Unique Characters (MEDIUM)

+ 2024/01/23 Daily Challenge

## 題目

https://leetcode.com/problems/maximum-length-of-a-concatenated-string-with-unique-characters/description/?envType=daily-question&envId=2024-01-23

## 思路
+ 這個解法其實是GPT先幫我生組合的code我才接下來開始做的，組合真的很好難喔QAQQ
+ 首先我把所有合法的組合窮舉出來後，把所有字串加起來，就是答案ㄌ
```c++=
class Solution {
public:
    int maxLength(vector<string>& arr) {
        int ans = 0;
        vector<string> currentCombination;
        generateCombinations(arr, currentCombination, 0, arr.size(), ans);
        return ans;
    }
    void generateCombinations(const std::vector<string>& arr, std::vector<string>& currentCombination, int start, int size, int& maxLength) 
    {
        // 输出当前组合
        if (!currentCombination.empty()) 
        {
            int sum = 0 ;
            for (string i : currentCombination) 
            {
                sum += i.size();
            }
            maxLength = max(maxLength, sum);
        }

        // 递归生成所有可能的组合
        for (int i = start; i < size; ++i) 
        {
            // 添加当前元素到组合中
            currentCombination.push_back(arr[i]);
            if(isLegal(currentCombination))
            {
                // 递归调用生成以当前元素为开头的组合
                generateCombinations(arr, currentCombination, i + 1, size, maxLength);
            }
            // 移除当前元素，进行下一个组合的生成
            currentCombination.pop_back();
        }
    }

    bool isLegal(vector<string>& currentCombination)
    {
        unordered_set<char> s;
        for(int i = 0 ; i < currentCombination.size(); i++)
        {
            for(int j = 0 ; j < currentCombination[i].size(); j++)
            {
                if(s.count(currentCombination[i][j]) != 0)
                {
                    return false;
                }
                else
                {
                    s.insert(currentCombination[i][j]);
                }
            }
        }
        return true;
    }
};
```

### 解法分析

+ time complexity: O(2^n)