版权声明:转载请联系QQ:1810647785 https://blog.csdn.net/weixin_42619451/article/details/82353866
Many Equal Substrings
题目描述
给定字符串 和需要的数量 ,得到一个字符串 ,要能够从 中得到 个 字符串,求最短的 。
实例1
输入
3 4
aba
输出
ababababa
实例2
输入
3 2
cat
输出
catcat
题解
从字符串的前和后找出两个最长的等长的子串,从前串的头开始找与后串相同的的最长子串,且后串的相同最长子串的尾必须是整个字符串的尾。循环输出前串相同最长子串后面的所有字符。
实现
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <algorithm>
#define ll long long
using namespace std;
int n, k;
string s;
int main() {
cin >> n >> k >> s;
int len = 0;
for(int i = 1; i < n; i++) {
if(s.substr(0, i) == s.substr(n - i)) {
len = i;
}
}
cout << s;
string t = s.substr(len);
for(int i = 1; i <= k; i++) {
cout << t;
}
return 0;
}