这道题题意很难懂,我猜了半天才自我感觉猜对了,最后写了一遍才过。这道题是说给你一个字符串,判断在这个字符串中,只让你去掉一个子字符串,剩下的字符串组合在一起是否等于CODEFORCES。这道题只需要判断字符串要嘛以CODEFORCES的前面某一个字符开始,以后面的几个字符串结尾即可,或者是直接以这个CODEFORCES结尾。
代码如下:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main() {
char s[110],s1[20]="CODEFORCES";
//int i,j,len;
int len2=strlen(s1);
while(cin>>s) {
int len=strlen(s);
int i=0,j=0,flag=0;
if(s[0]==s1[0]) {
i=1; j=1;
while(s[i]==s1[j] && i<len&&j<len2) {
i++; j++;
}
if(j==len2&& i<len) flag=1;
else if(j<len2&&i<len){
int t=len2-1,te=len-1,num=0;
while(s1[t]==s[te]&&t>=j&&te>i) {
t--; te--;
num++;
}
//cout<<j<<' '<<num<<endl;
if(j+num==len2) {
flag=1;
}
}
}
else {
j=0;
for(i=1; i<len; i++) {
int t=i;
j=0;
while(s[t]==s1[j] && t<len && j<len2) {
t++; j++;
}
if(j==len2&&t==len) {
flag=1; break;
}
}
}
if(flag) cout<<"YES"<<endl;
else cout<<"NO"<<endl;
}
return 0;
}