Occurrences des caractères d'une chaîne - Sujet 07 - EP NSI 2025
Énoncé du problème
Exercice 1
EXERCICE 1 (10 points)
Le nombre d’occurrences d’un caractère dans une chaîne de caractère est le nombre d’apparitions de ce caractère dans la chaîne.
Exemples :
- le nombre d’occurrences du caractère
'o'dans'bonjour'est 2 ; - le nombre d’occurrences du caractère
'b'dans'Bébé'est 1 ; - le nombre d’occurrences du caractère
'B'dans'Bébé'est 1 ; - le nombre d’occurrences du caractère
' 'dans'Hello world !'est 2.
On cherche les occurrences des caractères dans une phrase. On souhaite stocker ces occurrences dans un dictionnaire dont les clefs seraient les caractères de la phrase et les valeurs l’occurrence de ces caractères.
Par exemple : avec la phrase 'Hello world !' le dictionnaire est le suivant :
{'H': 1,'e': 1,'l': 3,'o': 2,' ': 2,'w': 1,'r': 1,'d': 1,'!': 1}
L’ordre des clefs n’a pas d’importance.
Écrire une fonction nbr_occurrences prenant comme paramètre une chaîne de caractères chaine et renvoyant le dictionnaire des nombres d’occurrences des caractères de cette chaîne.
Exercice 2
EXERCICE 2 (10 points)
La fonction fusion prend deux tableaux tab1, tab2 (type list) d’entiers triés par ordre croissant et les fusionne en un tableau trié tab12 qu’elle renvoie.
Compléter le code de la fonction fusion ci-dessous.
def fusion(tab1,tab2):
'''Fusionne deux tableaux triés et renvoie
le nouveau tableau trié.'''
n1 = len(tab1)
n2 = len(tab2)
tab12 = [0] * (n1 + n2)
i1 = 0
i2 = 0
i = 0
while i1 < n1 and ...:
if tab1[i1] < tab2[i2]:
tab12[i] = ...
i1 = ...
else:
tab12[i] = tab2[i2]
i2 = ...
i += 1
while i1 < n1:
tab12[i] = ...
i1 = i1 + 1
i = ...
while i2 < n2:
tab12[i] = ...
i2 = i2 + 1
i = ...
return tab12
Exemple :
>>> fusion([1,2,3],[])
[1, 2, 3]
>>> fusion([], [])
[]
>>> fusion([1, 6, 10],[0, 7, 8, 9])
[0, 1, 6, 7, 8, 9, 10]
Les contraintes ci-dessous sont ajoutées par la plateforme et ne font pas partie du sujet.
Exercice 1
Contraintes :
chaineest une chaîne de caractères (typestr)0 <= len(chaine) <= 10^4chainepeut contenir des lettres (accentuées comprises), des chiffres, des espaces et des signes de ponctuation- la casse est significative :
'B'et'b'sont deux clefs distinctes - si
chaineest vide, la fonction renvoie le dictionnaire vide{} - l’ordre des clefs du dictionnaire renvoyé n’a pas d’importance
Exercice 2
Contraintes :
tab1ettab2sont des tableaux (typelist) d’entiers0 <= len(tab1) <= 10^4et0 <= len(tab2) <= 10^4-10^9 <= tab1[i], tab2[i] <= 10^9tab1ettab2sont triés par ordre croissant- les valeurs peuvent être répétées, au sein d’un même tableau comme entre les deux tableaux
- le tableau renvoyé est trié par ordre croissant et de longueur
len(tab1) + len(tab2)