en c# vos donnees sont organisees en une liste de chaine de caratere. Chaune d'entre elles correspond a une seule personne et est organisee en paires clé/valeur. un exemple: Name = John, Age=15;Likes=Apples; et Name=Marry; Age=16;Likes=Baked potatoes;Team=Basketball; Vous avez certaines garanties sur les donnees d'entree: Chaque chaine contiendra toujours le champ Name; chque personne peut etre identifiee de maniere unique par le champ Name, s'il y a plusieurs lignes avec le meme valeur de Name, celles ci concernent toutes la meme personne; il peut y avoir des informations redondantes entre les chaine ou meme a l'interieur d'une seule chaine, mais elles ne se contrediront jamais; Les cles et les valeurs peuvent contenir n'importe quel caratere ASCII imprimable, à l'exception de = et de ; , qui sont utilises comme separateurs; Les chaines ne contiennent pas de saut de ligne \r ou\n. Fusionner les donnees et produire une liste regroupant toutes les informations relatives à chaque personne . Ces donnee etre formatee de la maniere suisvante: Toutes les personnes sont triees lexicographiquement par leur champ Name; Le premier champ pour chaque personne est Name, puis tous les autre champs sont tries par leur cle. Contraintes: il y aura au plus 100 chaines de carateres dans la liste; chaque chaine a une longeur max de 10000 caracteres; chaque chaine en sortie aura egalement une longeur max de 10000 carateres; il n'y a pas de champ vide, ni de cle vide, ni de valeur vide. Implementer : /** * @param dataStrings [[anArray]] de chaînes de caractères, où chaque chaîne représente une personne. * @return [[anArray]] de chaînes de caractères, les données d'entrée fusionnées. */ public static List<string> MergeData(List<string> dataStrings)
Étapes de la solution
Analyse des chaînes d'entrée :
- Parse chaque chaîne pour extraire les paires clé/valeur.
- Grouper les informations par le champ
Name
.
Fusionner les informations :
- Pour chaque personne (identifiée par
Name
), fusionner toutes ses informations dans un dictionnaire.
- Pour chaque personne (identifiée par
Trier et formater les résultats :
- Trier les personnes par leur
Name
dans l'ordre lexicographique. - Pour chaque personne, trier ses champs (sauf
Name
, qui est toujours en premier). - Formater chaque entrée dans le format requis.
- Trier les personnes par leur
Renvoyer les résultats :
- Retourner la liste des chaînes regroupées et formatées.
Points importants
Complexité :
- Parsing des chaînes : , où est le nombre de chaînes et est leur longueur moyenne.
- Tri et fusion : , où est le nombre moyen de champs par personne.
Manipulation des chaînes :
- Assurez-vous que les clés et les valeurs ne contiennent pas de caractères réservés (
=
ou;
).
- Assurez-vous que les clés et les valeurs ne contiennent pas de caractères réservés (
Gestion des données volumineuses :
- Bien que chaque chaîne puisse être longue, les structures comme
Dictionary
etSortedDictionary
sont adaptées pour gérer efficacement les données fusionnées.
- Bien que chaque chaîne puisse être longue, les structures comme
C#:
Aucun commentaire:
Enregistrer un commentaire