Menu
CoddyTech

Letter Combinations of a Phone Number

ŚrednieNawrotypython iconjava iconcpp iconc iconjs icon+10

Na klawiaturze telefonu każdej cyfrze od 2 do 9 przypisanych jest kilka liter: 2 to abc, 3 to def, 4 to ghi, 5 to jkl, 6 to mno, 7 to pqrs, 8 to tuv, a 9 to wxyz.

Otrzymujesz ciąg znaków digits. Wybierz jedną literę dla każdej cyfry, zachowując kolejność cyfr, a otrzymasz ciąg znaków, który można wpisać za pomocą klawiszy. Zwróć wszystkie takie ciągi, posortowane leksykograficznie (jak w słowniku). Dla "23" będzie to dziewięć ciągów, od "ad" do "cf".

Funkcja

letterCombinations(digits: string) → string-array
digitsstring
naciśnięte cyfry, każda z zakresu od 2 do 9
Zwracastring-array
każdy ciąg znaków, który można wpisać za pomocą klawiszy, w kolejności leksykograficznej

Ograniczenia

  • 1 ≤ digits.length ≤ 4
  • Każdy znak ciągu digits jest cyfrą od 2 do 9.
  • Odpowiedź zawiera co najwyżej 44 = 256 ciągów znaków.

Przykłady

Wejście
digits = "23"
Wyjście
["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]
Wyjaśnienie
2 oferuje a, b, c, a 3 oferuje d, e, f. Każda pierwsza litera łączy się z każdą drugą, więc powstaje 3 × 3 = 9 ciągów, a wypisanie ich tak, by pierwsza litera zmieniała się najwolniej, zachowuje ich sortowanie.

lock icon+14 ukrytych testów przy wysłaniu

challenge icon

Pytanie dodatkowe

Załóżmy, że chcesz uzyskać tylko te kombinacje, które są prawdziwymi słowami ze słownika. Jak uniknąć najpierw tworzenia wszystkich ciągów znaków 4^n?

Zresetuj kod
def letterCombinations(digits):
    # Wpisz kod tutaj
Przypadki testowe

Przypadek 1

Przypadek 2

Przypadek 3

Wejście

digits = "23"

Oczekiwane

["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"]