CF319D
感觉此题有点水,考场上写了个玄学做法居然过了。。。
点我返回题面
题目大意:
给你一个字符串,要求你每次都找到最短(相同则最靠前)的形如
思路分析
我们直接考虑依次模拟即可。
因为题目要求每次都找长度最短的,所以我们先枚举一个长度,然后枚举从第
因为是模拟,所以细节请看代码(其实也没有什么细节。。。)
CODE
#include<bits/stdc++.h>
using namespace std;
string s;//输入的字符串
signed main(){
cin>>s;
int len=s.size();//取出长度
for(int cnt=1;cnt<=len/2;cnt++){//枚举长度,从小到大
for(int j=0;j<len-cnt+1;j++){//枚举开始判断的位置
bool flag=1;
for(int k=0;k<cnt;k++){//枚举判断的位置
if (s[j+k]!=s[j+k+cnt]){//如果失败,则退出
flag=0;
break;
}
}
if(flag){//如果成功了
s.erase(j,cnt);//将 "X" 从字符串中删除
len-=cnt;//更新总长度
j--;
}
}
}
cout<<s<<endl;
return 0;
}