Untitled
bool isValid(const string& s, int l, int r) { unordered_map<char, int> freq; for (int i = l; i <= r; i++) { freq[s[i]]++; } int targetFreq = freq[s[l]]; for (auto& entry : freq) { if (entry.second != targetFreq) { return false; } } return true; } int minimum_k(string s) { int n = s.length(); vector<vector<int>> dp(n, vector<int>(n, INT_MAX)); for (int i = 0; i < n; i++) { dp[i][i] = 1; } for (int len = 2; len <= n; len++) { for (int i = 0; i <= n - len; i++) { int j = i + len - 1; if (isValid(s, i, j)) { dp[i][j] = 1; continue; } for (int k = i; k < j; k++) { dp[i][j] = min(dp[i][j], dp[i][k] + dp[k + 1][j]); } } } return dp[0][n - 1]; }
Leave a Comment