Les collections
Ces exercices portent sur Vec, String et les slices (&[T], &str).
Faites-les dans l'ordre.
Renverser les mots
Renverser l'ordre des mots d'une phrase : "le chat dort" -> "dort chat le". Les mots sont séparés par des espaces simples.
- Objectif :
split_whitespace,rev,collect::<Vec<_>>(),join(" "). - Signature suggérée :
fn renverser_mots(s: &str) -> String. - Cas de test :
renverser_mots("le chat dort")->"dort chat le",renverser_mots("bonjour")->"bonjour".
Histogramme de lettres
Compter les occurrences de chaque lettre minuscule ASCII (a-z) dans une
chaîne. Les autres caractères sont ignorés.
- Objectif :
chars, indexation d'un[u32; 26]viac as usize - 'a' as usize. - Signature suggérée :
fn compter_lettres(s: &str) -> [u32; 26]. - Cas de test : pour
"abbccc", l'indice 0 (a) vaut1, l'indice 1 (b) vaut2, l'indice 2 (c) vaut3; pour"Rust!",u,s,tvalent1et le reste0(leRmajuscule et le!sont ignorés).
Fusion de deux vecteurs triés
À partir de deux slices déjà triés par ordre croissant, produire un Vec trié
contenant tous leurs éléments.
- Objectif : deux indices qui avancent en parallèle,
Vec::push. - Signature suggérée :
fn fusion(a: &[i32], b: &[i32]) -> Vec<i32>. - Cas de test :
fusion(&[1, 3, 5], &[2, 4, 6])->[1, 2, 3, 4, 5, 6],fusion(&[], &[1, 2])->[1, 2],fusion(&[1, 1], &[1])->[1, 1, 1].
Palindrome
Dire si une chaîne se lit pareil dans les deux sens. Raisonne sur les
caractères (chars), pas sur les octets, et ignore la casse.
- Objectif :
chars,rev, comparaison ; piège de l'indexation d'uneString. - Signature suggérée :
fn est_palindrome(s: &str) -> bool. - Cas de test :
est_palindrome("kayak")->true,est_palindrome("Été")->true,est_palindrome("rust")->false.
Sans doublons
Renvoyer les éléments d'un slice sans doublons, en préservant l'ordre de première apparition.
- Objectif :
Vec,contains,push. - Signature suggérée :
fn sans_doublons(v: &[i32]) -> Vec<i32>. - Cas de test :
sans_doublons(&[1, 2, 1, 3, 2, 4])->[1, 2, 3, 4],sans_doublons(&[])->[].