Problème :
Trouver le premier caractère qui n'apparaît qu'une seule fois dans une chaîne (0<=longueur de chaîne<=10000, toutes composées de lettres) et renvoie sinon, sa position renvoie -1 (doit être sensible à la casse)
Tutoriels vidéo associés recommandés : Tutoriels en ligne Java
Idées de solutions :
L'exigence de la question est très claire, qui consiste à parcourir la chaîne et à compter les caractères. Après avoir compté, trouvez simplement le caractère avec un compte de 1. Évidemment, cela nécessite l'utilisation de hashmap, la clé est chaque caractère de la chaîne et la valeur est le nombre de fois que ce caractère apparaît dans la chaîne.
Le code est le suivant :
import java.util.LinkedHashMap; public class Solution { public int FirstNotRepeatingChar(String str) { int len = str.length(); LinkedHashMap<Character, Integer> map = new LinkedHashMap<>(); for (int i = 0; i < len; i++) { char c = str.charAt(i); Integer val = map.get(c); map.merge(c, 1, (oldValue, newValue) -> oldValue + newValue); } Character resultKey = null; for (Character c : map.keySet()){ if (map.get(c) == 1){ resultKey = c; break; } } for (int i = 0 ;i < len; i++){ if (str.charAt(i) == resultKey){ return i; } } return -1; } }
Articles et tutoriels connexes recommandés : Java Quick Start
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!