#include <iostream> #include <string> #include <algorithm> using namespace std; string f(const string& str, int cur, int len, int minLen) { int m = 1; string s = str.substr(cur, len); //cout << s << endl; for (int i = len + cur; i <= str.size()-len; i += len) { string tmp = str.substr(i, len); //cout << tmp << endl; if (s != tmp) break; ++m; } int ret = str.size() - m*len + len + 3; if (ret < minLen) { string tt(str.begin(), str.begin() + cur); tt += to_string(m); tt += '['; tt += s; tt += ']'; string tmp(str.begin() + cur + m*len, str.end()); tt += tmp; return tt; } else return ""; } int main() { string str; cin >> str; int len = str.size(); if (len < 5) { cout << len << endl; return 0; } int cur = 0; int ret = len; string newStr = str; while (true) { bool changed = false; for (int cur = 0; cur < str.size() - 4; ++cur) { //i位子串的长度 for (int i = 1; i <= str.size() / 2; ++i) { //cout << f(str, cur, i) << endl; string ff = f(str, cur, i, ret); if (ff != "") { ret = ff.size(); newStr = ff; changed = true; } } } str = newStr; if (!changed || str.size() < 5) break; } cout << ret << endl; }
点赞 5

相关推荐

不愿透露姓名的神秘牛友
昨天 18:35
简历上把1个月实习写成了3个月,会进行背调吗?
码农索隆:一个月有一个月的实习经历,三个月有三个月的实习经历
点赞 评论 收藏
分享
06-19 19:06
门头沟学院 Java
码农索隆:别去东软,真学不到东西,真事
点赞 评论 收藏
分享
仁者伍敌:难怪小公司那么挑剔,让你们这些大佬把位置拿了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务