#include <stdio.h>
#include <stdlib.h>
int myStrlen(char s[])
{
int i;
for (i = 0; s[i] != '\0'; i++)
;
return i;
}
int check(char s[])
{
int n = myStrlen(s);
int i = 0;
while (s[i] == s[n - i - 1])
{
if (i >= n / 2)
return 1;
i++;
}
return 0;
}
char *setPalindrome(char s[])
{
char *tmp;
int n = myStrlen(s), i;
tmp
= (char *)malloc(sizeof(char) * (n
* 2 + 1));
for (i = 0; i < n; i++)
{
tmp[i] = s[i];
}
tmp[n] = '\0';
if (check(tmp) == 1)
return tmp;
for (i = 1; i < n; i++)
{
for (int k = 0; k < i; k++)
{
tmp[k + n] = s[i - k - 1];
}
tmp[i + n] = '\0';
if (check(tmp) == 1)
{
return tmp;
}
}
return tmp;
}
int main()
{
int i;
char nyuryoku[1024];
char *kaibun;
kaibun = setPalindrome(nyuryoku);
printf("%s\n -> %s\n", nyuryoku
, kaibun
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBteVN0cmxlbihjaGFyIHNbXSkKewogICAgaW50IGk7CiAgICBmb3IgKGkgPSAwOyBzW2ldICE9ICdcMCc7IGkrKykKICAgICAgICA7CiAgICByZXR1cm4gaTsKfQoKaW50IGNoZWNrKGNoYXIgc1tdKQp7CiAgICBpbnQgbiA9IG15U3RybGVuKHMpOwogICAgaW50IGkgPSAwOwogICAgd2hpbGUgKHNbaV0gPT0gc1tuIC0gaSAtIDFdKQogICAgewogICAgICAgIGlmIChpID49IG4gLyAyKQogICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICBpKys7CiAgICB9CiAgICByZXR1cm4gMDsKfQoKY2hhciAqc2V0UGFsaW5kcm9tZShjaGFyIHNbXSkKewogICAgY2hhciAqdG1wOwogICAgaW50IG4gPSBteVN0cmxlbihzKSwgaTsKICAgIHRtcCA9IChjaGFyICopbWFsbG9jKHNpemVvZihjaGFyKSAqIChuICogMiArIDEpKTsKCiAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgewogICAgICAgIHRtcFtpXSA9IHNbaV07CiAgICB9CiAgICB0bXBbbl0gPSAnXDAnOwoKICAgIGlmIChjaGVjayh0bXApID09IDEpCiAgICAgICAgcmV0dXJuIHRtcDsKCiAgICBmb3IgKGkgPSAxOyBpIDwgbjsgaSsrKQogICAgewogICAgICAgIGZvciAoaW50IGsgPSAwOyBrIDwgaTsgaysrKQogICAgICAgIHsKICAgICAgICAgICAgdG1wW2sgKyBuXSA9IHNbaSAtIGsgLSAxXTsKICAgICAgICB9CiAgICAgICAgdG1wW2kgKyBuXSA9ICdcMCc7CiAgICAgICAgaWYgKGNoZWNrKHRtcCkgPT0gMSkKICAgICAgICB7CiAgICAgICAgICAgIHJldHVybiB0bXA7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiB0bXA7Cn0KCmludCBtYWluKCkKewogICAgaW50IGk7CiAgICBjaGFyIG55dXJ5b2t1WzEwMjRdOwogICAgY2hhciAqa2FpYnVuOwogICAgc2NhbmYoIiVzIiwgbnl1cnlva3UpOwogICAga2FpYnVuID0gc2V0UGFsaW5kcm9tZShueXVyeW9rdSk7CiAgICBwcmludGYoIiVzXG4gIC0+ICVzXG4iLCBueXVyeW9rdSwga2FpYnVuKTsKICAgIGZyZWUoa2FpYnVuKTsKICAgIHJldHVybiAwOwp9