最长双倍子串的问题123

在做作业,做一般不会做了

#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

img