Untitled
unknown
c_cpp
a year ago
883 B
15
Indexable
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];
}
Editor is loading...
Leave a Comment