在做作业,做一般不会做了
#include
using namespace std;
char s[105];
int n;
int main() {
while(1){
s[n] = getchar();
if(s[n] == '\n') break;
++n;
}
for(int len = n; len >= 1; --len){
for(int l = 0; l + len - 1 < n; ++l){
bool flag = 0;
for(int pl = l, pr = l + len - 1; pl < pr; ++pl, --pr)
if(s[pl] != s[pr]){
flag = 1;
break;
}
if(!flag){
for(int i = l; i <= l + len - 1; ++i)
putchar(s[i]);
return 0;
}
}
}
return 0;
}
最长双倍子串
题目描述
一个双倍串是指一个长度为偶数的字符串,并且从中间位置将其分开以后能够得到两个一样的字符串。特别地,空串也是一个双倍串。 给出一个字符串,求一个最长的双倍串使得该双倍串是原字符串的子串。
输入格式
从标准输入读入数据。 输入一个字符串,以换行符 '\n' 结尾,长度不超过 100,可能包含ASCII码为 [32..126] 内的字符和 \t 。
输出格式
输出到标准输出。 输出最长双倍子串。如有多个,输出在原字符串中位置最靠左的那个。
输入输出样例
|输入
aaaabcabc
输出
abcabc
思路:
在评论里
AC