J'ai un problème étrange pour imprimer le premier caractère non-répété de String.Erreur lors de la recherche du premier caractère non-répété dans Java
Si je mets par exemple « sasso » sous forme de chaîne, il me rend correctement: « a »
mais si je tente avec « Sassa » Je me demande pourquoi il me rend: « s »
public class FirstChar {
public char findFirst(String s) {
boolean[] letters = new boolean[26];
char[] firstLetter = new char[26];
for (int i = 0; i < s.length(); i++) {
if (letters[s.charAt(i) - 97] &&
(firstLetter[0] != (s.charAt(i)))) {
System.out.println(firstLetter[0]);
return firstLetter[0];
}
letters[s.charAt(i) - 97] = true;
char c = (char) (s.charAt(i));
firstLetter[i] = c;
}
System.out.println(firstLetter[1]);
return firstLetter[1];
}
public static void main(String args[]) {
FirstChar obj = new FirstChar();
obj.findFirst("sassa");
}
}
Pour '' sassa'', qu'espériez-vous? Savez-vous lequel des caractères '' s'' est retourné? Avez-vous essayé de parcourir le code ligne par ligne dans un débogueur? Peut-être que tu devrais? –
Je m'attends à ce que 'a' soit le premier caractère non répété – Clash
Donc, en "répétant", vous voulez dire "* consécutivement * répéter"? Vous devriez toujours essayer de parcourir le code dans un débogueur pour voir ce qu'il fait. –