Leetcode 471 Solution

This article provides solution to leetcode question 471 (encode-string-with-shortest-length)

https://leetcode.com/problems/encode-string-with-shortest-length

Solution

class Solution { public: string encode(string s) { int n = s.size(); if (n == 0) return "";
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, len); for (int k = i; k < j; k++) { if (dp[i][j].size() > dp[i][k].size() + dp[k + 1][j].size()) dp[i][j] = dp[i][k] + dp[k + 1][j]; }
string t = s.substr(i, len); int pos = (t + t).find(t, 1); if (pos != t.size()) t = to_string(t.size() / pos) + "[" + dp[i][i + pos - 1] + "]"; if (t.size() < dp[i][j].size()) dp[i][j] = t; } }
return dp[0][n - 1]; } };