Suteikė skaičių spausdinimą visus įmanomus deriniai stygų, kurias galima naudoti nurodytam numeriui surinkti telefone su šiomis specifikacijomis. Duota telefone mes galime surinkti 2 naudodami A arba B arba C 3, naudodami D arba E arba F ................... 8 Naudodami T arba U arba V 9, naudojant w arba x arba y arba z 1
Idėja yra saugoti skaitmenų simbolių žemėlapį maišos žemėlapyje. Žemėlapyje kaupiami visi simboliai, kuriuos galima naudoti „Dial“ skaitmens. Mes pateikiame visus įmanomus dabartinio skaitmens simbolius ir pasikartojame likusiems skaitmenims.
str.replace Java
Algoritmas:
- Sukurkite maišos žemėlapį su klavišais kaip skaitmenis nuo 0 iki 9 ir reikšmes kaip simbolių rinkinį, susietą su kiekvienu skaitmeniu.
- Apibrėžkite rekursinių funkcijų spausdintuvus, kuriuose yra keturi argumentai:
a. PHNO - įvesties telefono numeris
b. i - apdoroto dabartinio skaitmens rodyklė
c. HM - maišos skaitmenų žemėlapis į simbolių rinkinius
d. str. - iki šiol sugeneruota simbolių eilutė - Funkcijos „PrintStrings“ viduje:
a. Patikrinkite, ar aš pasiekiau telefono numerio pabaigą. Jei taip, atsispausdinkite sugeneruotą eilutę ir grąžinimą.
b. Gaukite simbolių rinkinį, susietą su dabartiniu skaitmeniu iš maišos žemėlapio.
c. Pakartokite kiekvieną rinkinio simbolią ir:
i. Pridėkite simbolią prie eilutės str.
ii. Rekursyviai paskambinkite kitam skaitmeniui atspausdinimo funkcijai.
iii. Pašalinkite paskutinį simbolią iš stygos str. - Apibrėžkite funkcijos spausdinimo stringFornumber, kuris paima vieną argumentą:
a. PHNO - įvesties telefono numeris - Funkcijos „PrintStringFornumber“ viduje skambinkite spausdinimo funkcijai, naudodamiesi argumentais, PHNO 0 HM ir tuščia eilute.
Žemiau yra „Java“ šios idėjos įgyvendinimas.
Įgyvendinimas:
C++// C++ program for the above approach #include #include using namespace std; void printStrings(string phNo int i unordered_map<char string> hm string str) { if (i == phNo.length()) { cout << str << ' '; return; } string s = hm[phNo[i]]; for (int j = 0; j < s.length(); j++) { str.push_back(s[j]); printStrings(phNo i+1 hm str); str.pop_back(); } } void printStringForNumber(string phNo) { unordered_map<char string> hm = { {'2' 'ABC'} {'3' 'DEF'} {'4' 'GHI'} {'5' 'JKL'} {'6' 'MNO'} {'7' 'PQRS'} {'8' 'TUV'} {'9' 'WXYZ'} {'1' '1'} {'0' '0'} }; string str; printStrings(phNo 0 hm str); } int main() { printStringForNumber('23'); return 0; } // This code is contributed by codebraxnzt
Java // Java program to print all possible key strings // that can be used to dial a phone number. import java.util.HashMap; class ConvertToString { // A Recursive function to print all combinations // that can be used to dial a given number. // phNo ==> Given Phone Number // i ==> Current digit of phNo to be processed // hm ==> Stores characters that can be used to // to dial a digit. // str ==> Current output string static void printStrings(String phNo int i HashMap<Character String> hm StringBuilder str) { // If all digits are processed print output // string if (i == phNo.length()) { System.out.print(str + ' '); return; } // Get current digit of phNo and recur for all // characters that can be used to dial it. String s = hm.get(phNo.charAt(i)); for (int j = 0; j < s.length(); j++) { str.append(s.charAt(j)); printStrings(phNo i+1 hm str); str.deleteCharAt(str.length()-1); } } // Prints all possible combinations of strings that // can be used to dial c[]. static void printStringForNumber(String phNo) { // Create a HashMap HashMap<Character String> hm = new HashMap<Character String>(); // For every digit store characters that can // be used to dial it. hm.put('2' 'ABC'); hm.put('3' 'DEF'); hm.put('4' 'GHI'); hm.put('5' 'JKL'); hm.put('6' 'MNO'); hm.put('7' 'PQRS'); hm.put('8' 'TUV'); hm.put('9' 'WXYZ'); hm.put('1' '1'); hm.put('0' '0'); // Create a string to store a particular output // string StringBuilder str = new StringBuilder(); // Call recursive function printStrings(phNo 0 hm str); } // Driver code to test above methods public static void main(String args[]) { // Prints printStringForNumber('23'); } }
Python def print_strings(ph_no i hm s): if i == len(ph_no): print(s end=' ') return for c in hm[ph_no[i]]: print_strings(ph_no i+1 hm s+c) def print_string_for_number(ph_no): hm = { '2': 'ABC' '3': 'DEF' '4': 'GHI' '5': 'JKL' '6': 'MNO' '7': 'PQRS' '8': 'TUV' '9': 'WXYZ' '1': '1' '0': '0' } s = '' print_strings(ph_no 0 hm s) print_string_for_number('23')
C# using System; using System.Collections.Generic; class Program { static void printStrings(string phNo int i Dictionary<char string> hm string str) { if (i == phNo.Length) { Console.Write(str + ' '); return; } string s = hm[phNo[i]]; for (int j = 0; j < s.Length; j++) { str += s[j]; printStrings(phNo i+1 hm str); str = str.Remove(str.Length-1); } } static void printStringForNumber(string phNo) { Dictionary<char string> hm = new Dictionary<char string> { {'2' 'ABC'} {'3' 'DEF'} {'4' 'GHI'} {'5' 'JKL'} {'6' 'MNO'} {'7' 'PQRS'} {'8' 'TUV'} {'9' 'WXYZ'} {'1' '1'} {'0' '0'} }; string str = ''; printStrings(phNo 0 hm str); } static void Main(string[] args) { printStringForNumber('23'); } }
JavaScript function printStrings(phNo i hm s) { if (i === phNo.length) { console.log(s + ' '); return; } for (let j = 0; j < hm[phNo[i]].length; j++) { s += hm[phNo[i]][j]; printStrings(phNo i+1 hm s); s = s.slice(0 -1); } } function printStringForNumber(phNo) { let hm = { '2': 'ABC' '3': 'DEF' '4': 'GHI' '5': 'JKL' '6': 'MNO' '7': 'PQRS' '8': 'TUV' '9': 'WXYZ' '1': '1' '0': '0' }; let s = ''; printStrings(phNo 0 hm s); } printStringForNumber('23');
Išvestis
AD AE AF BD BE BF CD CE CF
Laiko sudėtingumas: o (2^n) Čia n yra stygos ilgis
Pagalbinė erdvė: o (n)
kaip rasti paslėptas programas „Android“.