A. MITIT(c++)
首先前置知识,substr()函数:
可以看这篇博文
原文链接:C/C++编程笔记:C++中的substr()函数,教你具体使用方法_c++ substr-CSDN博客
然后就是substr()是根据索引复制一个字符串,因为string类型是有索引的,所以只有复制是O(n)
所以认为substr()是O(n)的;
然后用在这道题就很简单,也不用KMP,构造哈希什么的,直接根据索引比较;
两分钟写完
#include <bits/stdc++.h>
using namespace std;
#define iloves ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define int long long
const int MAX_N = 3e5 + 10;
map<int, int>mp;
int cnt,k, n,len, ide,flag;
double ans;
string s,a,b, s2;
void slove() {
cin>>n;
while(n--){
flag=0;
cin>>s;
len=s.length();
for(int i=1;i<=len/2;i++){
if(i==len/2&&len%2==0)continue;
a=s.substr(len-i);
b=s.substr(len-2*i,i);
if(a==b){flag=1;break;}
}
if(flag==0)cout<<"NO"<<endl;
else cout<<"YES"<<endl;
}
}
signed main() {
iloves;
int test = 1;
while (test--) {
slove();
}
}