A. Many Equal Substrings(字符串) Codeforces Round #506 (Div. 3)
原题链接: https://codeforces.com/problemset/problem/1029/A
测试样例
Input
3 4
aba
Output
ababababa
Input
3 2
cat
Output
catcat
题意: 给你一个长度为 n n n字符串 s s s,你需要去构建一个长度最小的字符串使得它的子串等于 s s s的数量为 k k k。
解题思路: 我们想想,如果我们直接将字符串 s s s拼接 k k k次是不是就满足了,可题中要求长度最小,所以我们要尽可能的利用字符串 s s s的前后缀对称性,既然其中字符重复利用,如果前缀等于后缀的长度越多,我们利用的也就越多,直接将前缀后面的字符拼接在后面即可。故我们可以去寻找前后缀相等的最长长度,这可以利用string类的substr()方法来截取子串。OK,具体看代码。
AC代码
/*
*邮箱:unique_powerhouse@qq.com
*blog:https://me.csdn.net/hzf0701
*注:文章若有任何问题请私信我或评论区留言,谢谢支持。
*
*/
#include<bits/stdc++.h>//POJ不支持
#define rep(i,a,n) for(int i=a;i<=n;i++)
#define per(i,a,n) for(int i=a;i>=n;i--)
using namespace std;
const int inf=0x3f3f3f3f;//无穷大。
const int maxn=1e5;//限定值。
typedef long long ll;
string s;
int n,k;
int main(){
while(cin>>n>>k){
int result;
cin>>s;
rep(i,0,n-2){
if(s.substr(0,i+1)==s.substr(n-i-1)){
result=i+1;
}
}
cout<<s;
rep(i,1,k-1){
cout<<s.substr(result);
}
}
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)