471. Encode String with Shortest Length
class Solution {
public:
string encode(string s) {
const int N = s.length();
vector<vector<string>> dp(N, vector<string>(N));
for (int len = 1; len <= N; ++len) {
for (int i = 0; i + len - 1 < N; ++i) {
int j = i + len - 1;
dp[i][j] = s.substr(i, j);
for (int k = i; k < j; ++k) {
string &l = dp[i][k], &r = dp[k + 1][j];
if (left.size() + r.size() < dp[i][j].size()) {
dp[i][j] = l + r;
}
}
string replace = "";
string t = s.substr(i, j - i + 1);
auto pos = (t + t).find(t, 1);
if (pos >= t.size()) {
replace = t;
} else {
replace = to_string(t.size() / pos) + '[' + dp[i][i + pos - 1] + ']'
}
if (replace.length() < dp[i][j].size()) dp[i][j] = replace;
}
}
}
};
Last updated