#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

相关推荐

02-19 12:50
黑龙江大学 Java
饼子吃到撑:你给他20,让他给你上班你看看他愿不愿意
点赞 评论 收藏
分享
KPLACE:首先是板面看起来不够,有很多奖,比我厉害。项目要精减,大概详细描述两到三个,要把技术栈写清楚,分点,什么算法,什么外设,怎么优化,不要写一大堆,分点,你写上去的目的,一是让别人知道你做了这个知识点,然后在面试官技术面的时侯,他知道你会这个,那么就会跟你深挖这个,然后就是个人评价改为专业技能
点赞 评论 收藏
分享
牛客网
牛客企业服务