试题 算法训练 Have You Ever Heard About the Word?
资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
一个字符串的子串是该字符串的一段连续子序列,如bca是abcabc的子串,而cc不是。
一个重复块(repeating block)由一个字符串与自身连接而成,如abcabc是一个重复块,而abcabd, ababab不是。
你有一个由拉丁字符组成的字符串。每一步你要找到它的子串中最短的重复块,如果有多于一个,你必须选择最左边的那个。你要将那个形如XX(X - 某个字符串)的重复块替换成X,换句话说你要删除其中的一个X。重复以上步骤直到字符串中不存在重复块。
最终的字符串会是怎样的?看样例解释来更清楚地理解问题描述。
输入格式
一行,一个由小写拉丁字符组成的字符串。
输出格式
输出做完所有操作后的字符串。
样例输入
aaaabaaab
样例输出
ab
数据规模和约定
1<=输入字符串长度<=50000
样例说明
字符串变换过程如下:aaaabaaab → aaabaaab → aabaaab → abaaab → abaab → abab → ab
提交代码
#include <iostream>