Trouvez des caractères couramment utilisés. Signification des questions est de donner un mot de gamme installé, une lettre de demande communs de ces mots à l'intérieur, la sortie sous forme de liste. Si plusieurs lettres identiques nécessite également plusieurs sorties. exemple,
Exemple 1:
Entrée: [ "bella", "label", "rouleau"] Rendement: [ "e", "l", "l"]
Exemple 2:
Entrée: [ "cool", "serrure", "cuire"] Sortie: [ "c", "o"]
L'idée est d'utiliser le numéro de l'entrée d'enregistrement des événements de la première lettre de chaque mot là-dedans, puis commencer à partir du deuxième mot, mais aussi pour calculer le nombre de fois que chaque lettre apparaît, mais mettre une lettre dans un mot apparaît dans le moins ajouté à l'ensemble de résultats. Par exemple, comme cool o qui apparaît deux fois, mais le verrou qui apparaît une seule fois o, o que lors de l'enregistrement de l'enregistrement du nombre d'occurrences du moins. Enfin, chaque mot qui traverse l'ensemble de résultats, la liste le nombre de fois à raccorder dans la sortie finale.
Temps O (n ^ 2)
Espace O (n)
1 classe Solution { 2 publique Liste <String> commonChars (String [] A) { 3 Liste <String> res = nouveau ArrayList <> (); 4 int [] Count = nouveau int [26 ]; 5 Arrays.fill (comptage, Integer.MAX_VALUE); 6 pour (String str: A) { 7 int [] cnt = nouveau int [26 ]; 8 pour ( omble c: str.toCharArray ()) { 9 cnt [c - 'a'] ++ ; dix } 11 pour ( int i = 0; i <26; i ++ ) { 12 comptage [i] = Math.min (comptage [i], cnt [i]); 13 } 14 } 15 16 pour ( int i = 0; i <26; i ++ ) { 17 tandis que (nombre [i]> 0 ) { 18 res.add ( "" + ( carbonisation ) (i + 'a' )) ; 19 comptage [i] - ; 20 } 21 } 22 retour res; 23 } 24 }
la mise en œuvre JavaScript
1 / * * 2 * @param {string []} A 3 * @return {string []} 4 * / 5 var commonChars = fonction (A) { 6 laisser arrayList = []; 7 pour (laisser str A) { 8 laisser arr = nouveau réseau (26) .Remplir (0 ); 9 pour (soit i = 0; i <str.length; i ++ ) { 10 arr [str [i] .charCodeAt () - « a'.charCodeAt ()] ++ ; 11 } 12 arrayList.push (arr); 13 } 14 laissez res = []; 15 pour (laisser i = 0; i <26; i ++ ) { 16 let min = 100 ; 17 pour (soit j = 0; j <arrayList.length; j ++ ) { 18 si (arrayList [j] [i] < min) { 19 min = arrayList [j] [i]; 20 } 21 } 22 pour (soit k = 0; k <min; k ++ ) { 23 res.push (String.fromCharCode (i + 'a' .charCodeAt ())); 24 } 25 } 26 retour res; 27 };