logo

Alle Kombinationen von Zeichenfolgen, mit denen eine Zahl wählt werden kann

Bei einer Nummer alle möglich drucken Kombinationen von Zeichenfolgen, mit denen die angegebene Nummer in einem Telefon mit den folgenden Spezifikationen wählt werden kann. In dem angegebenen Telefon können wir 2 mit A oder B oder C 3 verwenden, indem wir D oder E oder F ................... 8 verwenden, wobei T oder U oder V 9 verwendet wird, wobei W oder X oder Y oder Z 1 nur 1 0 verwendet wird, um 0 zu verwenden. Wenn 23 die angegebene Telefonnummer ist, sollte das Programm ad ae af bd bf cd ce cf drucken

Die Idee ist, die Ziffern auf Zeichenzuordnungen in Hash -Karte zu speichern. Die Karte speichert alle Zeichen, die verwendet werden können, wobei eine Ziffer verwendet werden kann. Wir platzieren jeden möglichen Charakter für die aktuelle Ziffer und Wiederholung der verbleibenden Ziffern. 

c-formatierte Zeichenfolge

Algorithmus:

  • Erstellen Sie eine Hash -Karte mit Schlüsseln als Ziffern von 0 bis 9 und Werten als Zeichen der Zeichen, die jeder Ziffer zugeordnet sind.
  • Definieren Sie eine rekursive Funktion Printstrings, die vier Argumente einnimmt:
    A. Phno - die Eingabe -Telefonnummer
    B. I - Der Index der aktuellen Ziffer wird verarbeitet
    C. HM - Die Hash -Karte der Ziffern zu Zeichensätzen
    D. STR - Die bisher generierte Zeichenfolge
  • In der Funktion der Printstrings:
    A. Überprüfen Sie, ob ich das Ende der Telefonnummer erreicht habe. Wenn ja, drucken Sie die generierte Zeichenfolge und kehren Sie zurück.
    B. Holen Sie sich den Satz von Zeichen, die der aktuellen Ziffer aus der Hash -Karte zugeordnet sind.
    C. Iterieren Sie über jeden Charakter im Set und:
           ich. Fügen Sie das Zeichen an die String str.
           ii. Rufen Sie rekursiv die PrintStrings -Funktion für die nächste Ziffer auf.
          III. Entfernen Sie das letzte Zeichen aus der String str.
  • Definieren Sie eine Funktion printstringFornumber, die ein Argument einnimmt:
    A. Phno - die Eingabe -Telefonnummer
  • In der Function Function PrintStringFornumber Rufen Sie die PrintStrings -Funktion mit den Argumenten Phno 0 hm und einer leeren Zeichenfolge auf.

Unten finden Sie die Java -Implementierung dieser Idee. 

Durchführung:

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'); 

Ausgabe
AD AE AF BD BE BF CD CE CF 

Zeitkomplexität: o (2^n)  Hier ist n Länge der Zeichenfolge 

Java-Namenskonventionen

Hilfsraum: o (n)