Home » Interview Questions » String Interview Questions » Print all possible words from phone digits

Print all possible words from phone digits


()

Given a string of numbers, each number represents a number on the QWERTY keyboards, texts and numbers were placed on the same key.

0, 1 – NULL
2 – ABC, 3 – DEF, 4 – GHI, 5 – JKL, 6 – MNO, 7 – PQRS, 8 – TUV, 9 – WXYZ.
We need to print all possible words with given number. If 0 or 1 comes we need to break as there will no iteration for these digits.

Example

Input string : 234

Output : ADG, ADH, ADI, AEG, AEH, AEI, AFG, AFH, AFI, BDG, BDI, BEG, BEH, BEI, BFG, BFH, BFI, CDG, CEG, CEH, CEI, CFG, CFH, CFI

Algorithm

Here, we use recursion.

1. Create a database table to store all characters correspond to digit i in the keyboard.

2. We store all possible words that can be obtained by input string[] of size n.

3. We store words in output[].

4. Try all possible characters for current digit and recursion for remaining digits.

5. We print the final output array.

C++ Program

#include <bits/stdc++.h>

using namespace std;

const char DataArray[10][5] = {"", "", "ABC", "DEF", "GHI", "JKL","MNO", "PQRS", "TUV", "WXYZ"};
 
//recursion to print all possible 
void  Recursion(int string[], int current_length, char output[], int string_length)
{
    int i;
    if (current_length == string_length)
    {
        cout<<output<<",";
        return;
    }
    //loop for all charcters according to given digits
    for (i=0; i<strlen(DataArray[string[current_length]]); i++)
    {
        output[current_length] = DataArray[string[current_length]][i];
        Recursion(string, current_length+1, output, string_length);
        //If 0 or 1 comes return from there
        if(string[current_length] == 0 || string[current_length] == 1)
        {
            return;
        }
    }
}
//call recurstion in this function
void PrintStrings(int string[], int string_length)
{
    char output[string_length+1];
    output[string_length] ='\0';
    Recursion(string, 0, output, string_length);
}
 
//Driver program
int main(void)
{
    int string[] = {2, 3, 4};
    int string_length = sizeof(string)/sizeof(string[0]);
    PrintStrings(string, string_length);
    return 0;
}

Try It

READ  Word Pattern

 

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote Count

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?

Array Interview Questions
Graph Interview Questions
LinkedList Interview Questions
String Interview Questions
Tree Interview Questions