Traceur de chaînes – indices, sous-chaînes et algorithmes sur les chaînes
InformatiqueAlgorithmique et résolution de problèmes15–16 ans
Chargement…
Connectez-vous pour lancerUne chaîne est dessinée comme une rangée de cases de caractères indicées à partir de 0. Le mode Opérations sur les chaînes traite la concaténation, la longueur, le caractère à un indice, la sous-chaîne ou tranche [a, b) sans l’indice de fin, la recherche (indexOf), equals, compareTo, majuscules/minuscules, le remplacement, le découpage et les codes de caractères, avec les résultats côte à côte en pseudo-code, Python et Java, erreurs d’indice comprises. Le mode Algorithmes avec boucles exécute pas à pas le comptage d’un caractère, l’inversion, le test de palindrome et la recherche naïve avec un tableau de suivi, et le dernier mode compte les comparaisons de la recherche naïve face à Boyer–Moore.
Leçon : Chaînes de caractères : indices, tranches et sous-chaînes, méthodes et parcours de chaînes
Ce qu’elle montre
Une chaîne est une suite non modifiable de caractères, chacun repéré par un indice qui commence à 0. La tranche s[a:b] de Python et s.substring(a, b) de Java incluent l’indice a et excluent l’indice b : elles renvoient b − a caractères ; Java lève une exception si un indice sort des bornes, alors que les tranches de Python ramènent les indices dans les bornes. Des méthodes comme upper, replace et split renvoient de nouvelles chaînes. Les algorithmes avec boucles parcourent les caractères un indice à la fois et un tableau de suivi note chaque étape. Boyer–Moore compare le motif depuis la droite et saute en avant après un échec.
Mode d’emploi
Tapez une chaîne s (et t, r ou c quand c’est demandé). Dans Opérations sur les chaînes, choisissez une Opération, faites glisser a et b et comparez les résultats en Pseudo-code, Python et Java ; cochez Afficher les codes des caractères pour voir les valeurs ASCII/Unicode. Dans Algorithmes avec boucles, choisissez un Algorithme et le langage dans Code, puis appuyez sur Pas suivant ou Lecture et suivez la ligne surlignée et le tableau de suivi. Dans Naïve ou Boyer–Moore, avancez les deux recherches et comparez leurs comptes.
Paramètres modifiables
- Mode Opérations sur les chaînes, Algorithmes avec boucles, Recherche : naïve ou Boyer–Moore
- Opération s + t (concaténation), longueur, caractère à l’indice a, sous-chaîne / tranche [a, b), rechercher t (find / indexOf), égalité (equals), comparer (compareTo), en majuscules, en minuscules, remplacer t par r, découper selon c, code du caractère (ord / chr)
- Algorithme compter un caractère c, inverser la chaîne, tester un palindrome, recherche naïve d’une sous-chaîne
- Langage du code Pseudo-code, Python, Java
- Chaîne s
- Deuxième chaîne t (motif)
- Remplacement r
- Caractère c
- Indice a 0–28
- Indice b 0–28
- Afficher les codes des caractères
- Vitesse 0,5–10 pas/s
Questions à explorer
- Pourquoi s.substring(2, 5) renvoie-t-il 3 caractères, et que se passe-t-il en Java et en Python si b dépasse la longueur ?
- Pourquoi "apple".compareTo("Apple") donne-t-il un nombre positif ?
- Pourquoi Boyer–Moore fait-il moins de comparaisons que la recherche naïve quand le motif est long ?