ForHosting KIT · Texto e IA

Comprobar rotación de cadenas

Una rotación de cadena conserva todos los caracteres en el mismo orden circular, pero desplaza un prefijo del principio al final o, de forma equivalente, un sufijo al principio.

● BetaGratis · en su navegador
Úselo desde WebAPIEmailTelegramApp pronto

Este comprobador compara dos cadenas e indica si la segunda puede obtenerse rotando la primera cualquier cantidad de posiciones, incluida ninguna. La coincidencia es exacta: mayúsculas, espacios, signos y caracteres Unicode son significativos. Como una rotación no añade ni elimina caracteres, las longitudes distintas generan un error de validación claro en lugar de un resultado negativo.

Qué se considera una rotación de cadena

Una rotación cambia el punto de inicio de una cadena sin alterar la secuencia circular de sus caracteres. Por ejemplo, si se rota “waterbottle” trasladando los tres primeros caracteres al final, se obtiene “erbottlewat”. La candidata contiene exactamente los mismos caracteres, en el mismo orden cíclico; solo cambia el límite entre el final y el principio. La rotación de cero posiciones también es válida, por lo que una cadena siempre se considera rotación de sí misma. Los caracteres repetidos no modifican la regla, aunque pueden hacer que varias posiciones produzcan el mismo resultado visible. Esta comprobación es más estricta que determinar si dos cadenas son anagramas. Un anagrama permite reordenar libremente los caracteres, mientras que una rotación conserva su orden alrededor del ciclo. La comparación distingue mayúsculas y minúsculas y es literal. También tiene en cuenta espacios, signos de puntuación, caracteres combinados y saltos de línea. Introduzca el valor original en `first` y la candidata en `second`; el resultado incluye el booleano `is_rotation`.

Cómo funciona la comprobación

Primero se valida que ambos campos sean cadenas y tengan la misma longitud. Esa igualdad es indispensable, pues una rotación nunca inserta ni elimina caracteres. Si las longitudes difieren, la solicitud se rechaza como entrada no válida, lo que permite distinguir una comparación mal formada de una candidata legítima de igual longitud que simplemente no es una rotación. Con entradas válidas, la implementación busca la candidata durante dos recorridos consecutivos de la cadena original. Cualquier rotación debe aparecer dentro de ese espacio de búsqueda circular. El algoritmo utiliza una tabla de prefijos para no reiniciar desde el carácter siguiente después de cada coincidencia parcial fallida, con un comportamiento lineal y determinista respecto de la longitud. No consulta servicios de red, modelos lingüísticos ni reglas regionales, y tampoco normaliza el texto. Por ello, la misma secuencia de unidades de código siempre produce la misma respuesta. Dos cadenas vacías son rotaciones entre sí, y dos cadenas idénticas cumplen el caso válido de cero posiciones.

Cómo interpretar el resultado y preparar la entrada

Un resultado `true` significa que existe al menos un desplazamiento circular de `first` cuyo valor completo coincide con `second`. Un resultado `false` indica que las cadenas tienen igual longitud, pero ningún desplazamiento logra una coincidencia exacta. Antes de comparar texto procedente de fuentes diferentes, decida si la coincidencia literal representa el problema que desea resolver. Esta capacidad no recorta espacios, unifica mayúsculas y minúsculas, elimina signos ni aplica normalización Unicode, porque esas transformaciones cambiarían silenciosamente las cadenas enviadas. Si su aplicación considera equivalentes “A” y “a”, o trata como iguales las formas Unicode compuestas y descompuestas, normalice ambos valores de manera uniforme antes de enviarlos. Conserve los espacios iniciales o finales cuando formen parte de identificadores o secuencias codificadas. El precio base de la API es $0.002 por solicitud, mientras que la versión para navegador puede ejecutar localmente la misma lógica determinista. En pruebas automatizadas, incluya rotaciones positivas, comparaciones negativas de igual longitud, caracteres repetidos, cadenas idénticas y el error por longitudes distintas.

Validar la salida de un búfer circular

Confirme que un búfer capturado contiene la secuencia prevista aunque la lectura haya comenzado en otra posición del ciclo.

Probar ejercicios de programación

Compruebe respuestas esperadas de problemas de rotación sin confundir el orden circular con la comparación libre de anagramas.

Comparar identificadores cíclicos

Determine si dos representaciones de igual longitud describen el mismo ciclo repetitivo desde puntos iniciales distintos.

¿Una cadena sin cambios cuenta como rotación?

Sí. Se permite rotar cero posiciones, por lo que toda cadena es una rotación de sí misma.

¿Se consideran iguales las mayúsculas y las minúsculas?

No. La comparación es exacta y distingue mayúsculas de minúsculas, por lo que sus unidades de código son diferentes.

¿Qué ocurre si las cadenas tienen longitudes diferentes?

La capacidad devuelve un error de entrada no válida porque una rotación no puede cambiar la cantidad de caracteres.

¿Una rotación de cadena equivale a un anagrama?

No. Una rotación conserva el orden circular, mientras que un anagrama puede reorganizar los caracteres de cualquier manera.

¿Las cadenas vacías se consideran rotaciones?

Sí. Dos cadenas vacías tienen la misma longitud y coinciden mediante una rotación de cero posiciones.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/text/string-rotation-check

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/text/string-rotation-check \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"first":"waterbottle","second":"erbottlewat"}'
{
  "first": "waterbottle",
  "second": "erbottlewat"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "text.string_rotation_check",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

max_tokens20000
HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Ver la documentación completa del KIT →