2017-09-15 3 views
4

Ich kam vor kurzem von einem Interview zurück und sie fragte im Grunde: Gegeben eine Liste von gültigen Wörtern und eine Zuordnung von Zahlen zu Buchstaben - so etwas wie 1 -> ABC, 2-> DEF - wie würde ich Schreiben Sie eine Funktion, die eine Liste gültiger Strings zurückgibt. Ich habe mich wirklich angestrengt und suche Führung.Listing gültige Wörter aus Telefon Mapping

function validWords(digits, listOfValidWords) { 

} 

// for example 
var dictionary = [//some list of words]; 
var words = validWords("1456", dictionary) 
+0

Ist 1456 wird eine eine Zahl oder 4 separate Zahlen oder eine beliebige Kombination dieser Zahlen kann ein Ergebnis sein? Wie 1, 4, 5, 6, 14, 15, 16 usw. – Observer

+0

Getippte Nummerntasten am Telefon. Zum Beispiel kann die Taste "1" "A" oder "B" oder "C" bedeuten. – ideaboxer

+0

füllen Sie Ihr 'Wörterbuch' mit Beispielwerten und geben Sie das erwartete Ergebnis ein – RomanPerekhrest

Antwort

4

Sie könnten einen Kombinationsalgorithmus verwenden.

var dictionary = { 2: 'abc', 3: 'def', 4: 'ghi', 5: 'jkl', 6: 'mno', 7: 'pqrs', 8: 'tuv', 9: 'wxyz' }, 
 
    number = '345', 
 
    result = [...number] 
 
     .map(n => [...dictionary[n]]) 
 
     .reduce((a, b) => a.reduce((r, v) => r.concat(b.map(w => v + w)), [])); 
 
     
 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

Danke für die nette Lösung (funktioneller Ansatz). – ideaboxer