Je souhaite récupérer le caractère le plus redondant dans une chaine de caractère. J’ai bien une idée mais je n’arrive pas à tisser mon code autour :??:
Je procede de la maniere suivante :
J’ai 3 tableaux, un qui contient a…z, le deuxieme A…Z et le troisième contient ma chaine de caractères.
Je n’arrive pas a trouver l’algo qui pourrait me sortir le caractere qui revient le plus souvent.
Faut-il que je teste pour chaque case de mon troisieme tableau mes 2 autres?
Merci de vos suggestions
[cpp]char tabMin[] = new char[26];
char tabMaj[] = new char[26];
char tabStr[] = new char[s.length()];
int tabCountMin[] = new int[26];
int tabCountMaj[] = new int[26];
// Ici on rempli les 2 tableaux tabMin de b…z et tabMaj de B…Z
for (int i = 1; i < 26; i++) {
tabMin[i] = (char)(‘a’ + i);
tabMaj[i] = (char)(‘A’ + i);
}
// On rempli le tableau tabStr avec chaque caractère de la chaine
for (int i = 0; i < s.length(); i++)
tabStr[i] = s.charAt(i);
// Ici, pour chaque lettre de l’alphabet, on va noter dans un tabCount le nombre d’occurence de
// chaque caractere de la chaine (minuscule et majuscule)
for (int i = 0; i < 26; i++) {
for (int j = 0; j < s.length(); j++) {
if (tabMin[i] == tabStr[j])
tabCountMin[i] += 1;
if (tabMaj[i] == tabStr[j])
tabCountMaj[i] += 1;
}
}
// On regarde quelle lettre revient le plus fréquement (on est limite a une lettre dans cette config)
int maxMin = 0;
for (int i = 0; i < tabCountMin.length; i++) {
if (tabCountMin[i] > maxMin) { maxMin = tabCountMin[i];}
}
int maxMaj = 0;
for (int i = 0; i < tabCountMaj.length; i++) {
if (tabCountMaj[i] > maxMaj) { maxMaj = tabCountMaj[i];}
}[/cpp]
J’ai fait ca, c’est un peu lourd mais ca me permet de déterminer toutes les occurences de chaque caractère de la chaine.