Java, 174 bytes
x->{Function<String,String>r=t->new StringBuilder(t).reverse().toString();String y=r.apply(x),z=x;int m=x.length();while(!z.equals(r.apply(z)))z=x+y.substring(--m);return z;}
Sin golf:
x -> {
Function<String, String> r = t -> new StringBuilder(t).reverse().toString();
String y = r.apply(x), z=x;
int m = x.length();
while (!z.equals(r.apply(z))) z = x+y.substring(--m);
return z;
}
Tengo la sensación de que podría ser mucho más estricto, pero no es inmediatamente obvio para mí cómo. La función consume mucho espacio, pero la necesitaba en dos lugares.
Esto funciona para cualquier cadena, no solo números, y puede tener cualquier longitud.