Leetcode 17. Letter Combinations of a Phone Number
2-9 sonlaridan taşkil topgan string berilgan. Raqamlar ketma-ketligi böyiça barça harf-kombinatsiyalarni array körinişida qaytaring. Sonlarning harflar böyiça mappingi quyidagi rasmda keltirilgan. 1 soni heç qanday harfga boğlanmagan.

Misol:
Input: digits = "23" Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
Işlaş tartibi
Yuqorida keltirilgan misolga e'tibor bersangiz, u odatiy tree ma'lumotlar tuzilmasiga öxşaydi:

Demak bir yeçim - berilgan matn raqamlaridan mapping asosida tree yasab olişimiz va tree'ning barglaridagi qiymatlarni array'ga terib çiqişimiz mumkin.
Lekin map asosida işlaydigan backtracking algoritmli yeçim ham bor. Biz quyida uni körib ötamiz.
- Telefon harflarini map arrayga yiğib olamiz:
const map = {
2: "abc",
3: "def",
4: "ghi",
5: "jkl",
6: "mno",
7: "pqrs",
8: "tuv",
9: "wxyz",
};
-
digitsmatnining har bir harfini (raqamini) rekursiv funksiya içidamapiçidan topamiz. Masalan,digits = 56bölsa,const str = map[digits[0]]dan keyinstrkonstanta'jkl'qiymatga ega böladi. -
strmatnning har bir harfini alohidaprefixarray'ga yiğamiz. -
rekursiv funksiyaga
index + 1argument berib, uni işga tuşiramiz. -
rekursiv funksiya içida agar
index === digits.lengthbölsa, prefix array'ni stringga ögirib,resultsarrayga qöşamiz va funksiyani töxtatamiz. -
resultsarrayni asosiy funksiyaning natijasi sifatida qaytaramiz.
Tuşunarli bölişi uçun kodni örganib çiqqaningiz ma'qul.