ForHosting KIT · Texte et IA

Vérifier la rotation de chaînes

Une rotation de chaîne conserve tous les caractères dans le même ordre circulaire, tout en déplaçant un préfixe du début vers la fin ou, de façon équivalente, un suffixe vers le début.

● BetaGratuit · dans votre navigateur
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt

Cet outil compare deux chaînes et indique si la seconde peut être obtenue en faisant tourner la première d’un nombre quelconque de positions, y compris zéro. La comparaison est exacte : majuscules, espaces, ponctuation et caractères Unicode restent significatifs. Puisqu’une rotation ne peut ajouter ni supprimer de caractères, des longueurs différentes déclenchent une erreur de validation explicite plutôt qu’un résultat négatif.

Ce qui constitue une rotation de chaîne

Une rotation change le point de départ d’une chaîne sans modifier la séquence circulaire de ses caractères. Par exemple, faire tourner « waterbottle » en déplaçant ses trois premiers caractères vers la fin produit « erbottlewat ». La chaîne candidate contient exactement les mêmes caractères dans le même ordre cyclique ; seule la frontière entre la fin et le début a changé. Une rotation de zéro position est valable : toute chaîne est donc une rotation d’elle-même. Les caractères répétés ne changent pas cette règle, même si plusieurs positions peuvent alors produire le même résultat visible. Ce contrôle est plus strict qu’un test d’anagramme. Une anagramme permet de réorganiser librement les caractères, tandis qu’une rotation préserve leur ordre autour du cycle. La comparaison est littérale et sensible à la casse. Les espaces, signes de ponctuation, caractères combinés et sauts de ligne sont également pris en compte. Placez la valeur d’origine dans `first` et la candidate dans `second` ; le résultat contient le booléen unique `is_rotation`.

Fonctionnement de la vérification

L’outil vérifie d’abord que les deux champs sont des chaînes et que leurs longueurs sont égales. Cette égalité est indispensable : une rotation n’insère ni ne supprime jamais de caractère. Si les longueurs diffèrent, la requête est rejetée comme entrée incorrecte, afin de distinguer une comparaison mal formée d’une candidate légitime de même longueur qui n’est simplement pas une rotation. Pour des entrées valides, l’implémentation recherche la candidate pendant deux parcours consécutifs de la chaîne d’origine. Toute rotation doit apparaître dans cet espace de recherche circulaire. Une table de préfixes évite de recommencer au caractère suivant après chaque échec partiel et garantit un comportement linéaire et déterministe par rapport à la longueur. Aucun service réseau, modèle linguistique ni règle régionale n’est utilisé, et le texte n’est pas normalisé. Une même séquence d’unités de code fournit donc toujours la même réponse. Deux chaînes vides sont des rotations mutuelles, et deux chaînes identiques satisfont le cas valable du déplacement nul.

Interpréter les résultats et préparer les entrées

Le résultat `true` signifie qu’il existe au moins un décalage circulaire de `first` dont la valeur complète est égale à `second`. Le résultat `false` indique que les chaînes ont la même longueur, mais qu’aucun décalage ne produit une correspondance exacte. Avant de comparer des textes issus de sources différentes, déterminez si une comparaison littérale convient à votre besoin. Cette capacité ne supprime pas les espaces, ne neutralise pas la casse, n’efface pas la ponctuation et n’applique aucune normalisation Unicode, car ces transformations modifieraient silencieusement les chaînes transmises. Si votre application considère « A » et « a » comme équivalents, ou assimile les formes Unicode composées et décomposées, normalisez les deux valeurs de manière cohérente avant l’envoi. Conservez les espaces initiaux ou finaux lorsqu’ils font partie d’identifiants ou de séquences codées. Le tarif de base de l’API est de $0.002 par requête, tandis que la version navigateur exécute localement la même logique déterministe. Pour vos tests, prévoyez des rotations positives, des échecs de même longueur, des répétitions, des chaînes identiques et l’erreur de longueur.

Valider la sortie d’un tampon circulaire

Confirmez qu’un tampon capturé contient la séquence attendue même si la lecture a commencé ailleurs dans le cycle.

Tester des exercices de programmation

Contrôlez les réponses à des problèmes de rotation sans confondre ordre circulaire et comparaison libre d’anagrammes.

Comparer des identifiants cycliques

Déterminez si deux représentations de même longueur décrivent le même cycle répétitif depuis des points de départ différents.

Une chaîne inchangée compte-t-elle comme rotation ?

Oui. Un déplacement de zéro position est autorisé ; toute chaîne est donc une rotation d’elle-même.

Les majuscules et les minuscules sont-elles équivalentes ?

Non. La comparaison exacte est sensible à la casse, et leurs unités de code sont distinctes.

Que se passe-t-il si les longueurs sont différentes ?

La capacité renvoie une erreur d’entrée incorrecte, car une rotation ne peut modifier le nombre de caractères.

Une rotation de chaîne est-elle une anagramme ?

Non. Une rotation préserve l’ordre circulaire, alors qu’une anagramme peut réorganiser librement les caractères.

Les chaînes vides sont-elles des rotations ?

Oui. Deux chaînes vides ont la même longueur et correspondent avec un déplacement de zéro position.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

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

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

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"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

max_tokens20000
HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Consulter la documentation complète du KIT →