Ma solution consiste à convertir les alphabets minuscules (a-z) en (0-25) et vice versa.
Ma réponse est pour un cas d'utilisation spécifique, ce n'est pas une solution générique. Ma solution vous aidera si vous voulez stocker la fréquence d'un caractère dans un tableau d'entiers de taille 26 au lieu d'utiliser Hashmap<Character,Integer>.
----> pour la conversion de 0 à 25 en a-z
char ch=(char)(0+'a') ; // sortie 'a' // entrée 0 (en tant que nombre entier)
char ch=(char)(25+'a') ; // sortie 'z' // entrée 25(en tant que nombre entier)
---->pour convertir de a à z en 0-25
int freq='a'-'a' // sortie 0 // entrée 'a
int freq='b'-'a' // Sortie 1 // Entrée 'b'.
int freq='c'-'a' // Sortie 2 // Entrée 'c'.
int freq='z'-'a' // Sortie 25 // Entrée 'z'.
Encore une fois, cette approche vous aidera à obtenir la fréquence des caractères ainsi que les caractères.
public class Main
{
public static void main(String[] args) {
String s="rajatfddfdf";
int freq[]= new int[26];
for(int i=0;i<s.length();i++){
char characterAtIndex=s.charAt(i);
freq[characterAtIndex-'a']+=1;
}
for(int i=0;i<26;i++){
System.out.println((char)('a'+i)+" frequency="+freq[i]);
}
}
}
En utilisant le code ci-dessus, nous pouvons obtenir la fréquence ainsi que le caractère en utilisant un tableau d'entiers de taille 26. Nous pouvons écrire la logique if-else si vous ne voulez pas inclure le caractère avec la fréquence 0.