/* * shortest-palindrome */ #include #include #include int is_palin (char *s); void go (char *s); int main (void) { char s [100]; while (gets (s) != NULL) { go (s); } return 0; } int is_palin (char *s) { char t [100]; int i, j; j = 0; for (i = strlen (s) - 1; i >= 0; i--) { t [j++] = s [i]; } t [j] = '\0'; if (!strcmp (t, s)) return 1; else return 0; } void go (char *s) { int i, j, k; char foo [100]; if (is_palin (s)) { printf ("%s\n", s); return; } for (i = 0; i < strlen (s); i++) { strcpy (foo, s); k = strlen (foo); for (j = i; j >= 0; j--) { foo [k++] = s [j]; } foo [k] = '\0'; if (is_palin (foo)) { printf ("%s\n", foo); return; } } }