[LeetCode 471] Encode String with Shortest Length

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode 471] Encode String with Shortest Length相关的知识,希望对你有一定的参考价值。

Trick:  int r = (sub + sub).find(sub, 1); 寻找重复pattern。sub.size() % r == 0一定成立。否则设r是查找结果,总能找到更小的r满足条件。

 1 class Solution {
 2 public:
 3     string encode(string s) {
 4         int n = s.size();
 5         vector<vector<string>> dp(n + 1, vector<string>(n + 1));
 6         for (int i = 0; i < n; i++) {
 7             dp[i][i + 1].push_back(s[i]);
 8         }
 9         for (int k = 2; k <= n; k++) {
10             for (int i = 0, j = k; j <= n; i++, j++) {
11                 dp[i][j] = dp[i][j - 1] + dp[j - 1][j];
12                 for (int m = i + 1; m < j; m++) {
13                     string tmp = dp[i][m] + dp[m][j];
14                     if (tmp.size() < dp[i][j].size()) {
15                         dp[i][j] = tmp;
16                     }
17                 }
18                 int len = j - i;
19                 string sub = s.substr(i, len);
20                 int r = (sub + sub).find(sub, 1);
21                 if (r < len) {
22                     string tmp = to_string(len / r) + "[" + dp[i][i + r] + "]";
23                     if (tmp.size() < dp[i][j].size()) {
24                         dp[i][j] = tmp;
25                     }
26                 }
27             }
28         }
29         return dp[0][n];
30     }
31 };

 

以上是关于[LeetCode 471] Encode String with Shortest Length的主要内容,如果未能解决你的问题,请参考以下文章

ENCODE(str, pswd_str)

bytes与str(encode,decode)

python3 str.encode bytes.decode

encode,decode,str to bytes

TypeError:“str”对象的描述符“encode”不适用于“tuple”对象

encode和decode关系