码迷,mamicode.com
首页 > Web开发 > 详细

[LeetCode 471] Encode String with Shortest Length

时间:2017-02-26 16:48:15      阅读:1122      评论:0      收藏:0      [点我收藏+]

标签:bsp   push   tmp   blog   trick   find   否则   leetcode   条件   

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

标签:bsp   push   tmp   blog   trick   find   否则   leetcode   条件   

原文地址:http://www.cnblogs.com/ivancjw/p/6444847.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!