首页 > 试题广场 >

最短字符编码

[编程题]最短字符编码
  • 热度指数:844 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
给定一个非空字符串, 按照如下方式编码, 使得编码后长度最小, 返回编码后的长度: 
编码规则为: k[encoding_string], 表示重复k次encoding_strng, 
例如'abcdefabcdefabc'可表示为'2[abcdef]abc', 但是'aaa'仅能编码成'aaa', 
因为len('3[a]')>len('aaa').
补充:
1. k为正整数, []内的encoding_string不得含有空格不得为空;
2. []内的encoding_string 本身可以为编码过的字符串, 例如'abcdabcdeabcdabcde' 可以编码为 '2[abcdabcde]'(编码后长度从18减少到12), []内的'abcdabcde'又可以编码为 '2[abcd]e', 最终编码为 '2[2[abcd]e]', 编码后长度为11, 应返回11; 这个编码路径也能是: 'abcdabcdeabcdabcde' -> '2[abcd]e2[abcd]e' -> '2[2[abcd]e]';
2. 输入字符串为全小写英文字母, 长度<=160;
3. 如果编码后长度没有更小, 则保留原有字符串;

输入描述:
一行数据, 表示输入字符串


输出描述:
输出一个字符串表示编码后长度
示例1

输入

aaa

输出

3

说明

aaa,长度3
示例2

输入

aaaaa

输出

4

说明

5[a],长度4
示例3

输入

aabcaabcd

输出

8

说明

2[aabc]d,长度8
头像 祈求顺利毕业
发表于 2021-12-06 10:07:04
#include #include #include #include #include using namespace std; void search(string&s1,vector<pair<string,int>>&v1,int num){ int 展开全文