Question concernant une ligne du code [duplicate]

Sep 26 2020

Dans le code ci-dessous, j'ai une question, le tableau déclaré donné est de type integer. Pouvez-vous s'il vous plaît expliquer ce qui se passe au niveau de la carte de ligne [s.charAt (i)] ++. J'ai du mal à comprendre la déclaration ici car le tableau est de type entier lors de l'initialisation, mais le type de caractère est donné en entrée.

public int firstUniqChar(String s) 
{ 
int[] map = new int[128]; 
for(int i=0;i<s.length();i++)
 map[s.charAt(i)]++; 
for(int i=0;i<s.length();i++) 
if(map[s.charAt(i)] == 1) 
return i; 
return -1;
 }

Réponses

1 SidneiBernardo Sep 26 2020 at 10:55

En java, en supposant que vous ayez une int i = 0déclaration de variable, le i++est une syntaxe suggérée pour additionner 1 à la valeur de la variable, ie i = i + 1. Dans votre cas, vous additionnez 1 à une mapposition de tableau, indexée par s.charAt(i).

Supposons que ce ssoit un objet String, s.charAt(i)renvoie le charà la iposition (indexé 0). Lorsque Java lit le charcomme un int(pour indexer le maptableau), il utilise le code ASCII de celui-ci char.

Donc, ce que map[s.charAt(i)]++fait est de faire la somme de 1 au maptableau indexé par le code ASCII du personnage.