class Program { static void Main(string[] args) { int[] phoneNumber = new int[]{2,3,4}; ListtelephoneWords = GetTelephoneWords(phoneNumber, 0); } //get all the combinations / telephone words for a given telephone number static List GetTelephoneWords(int[] numbers, int index) { List newWords = new List (); if (index == numbers.Length - 1) { newWords.AddRange(GetLetters(numbers[index])); } else { List wordsSoFar = GetTelephoneWords(numbers, index + 1); string[] letters = GetLetters(numbers[index]); foreach (string letter in letters) { foreach (string oldWord in wordsSoFar) { newWords.Add(letter + oldWord); } } } return newWords; } //gets the letters corresponding to a telephone digit static string[] GetLetters(int i) { switch (i) { case 1: return new string[]{"1"}; case 2: return new string[] { "a", "b", "c" }; case 3: return new string[] { "d", "e", "f" }; case 4: return new string[] { "g", "h", "i" }; case 5: return new string[] { "j", "k", "l" }; case 6: return new string[] { "m", "n", "o" }; case 7: return new string[] { "p", "q", "r", "s" }; case 8: return new string[] { "t", "u", "v" }; case 9: return new string[] { "w", "x", "y", "z" }; case 0: return new string[]{"0"}; default: return new string[] { }; } } }
Frequently asked programming interview questions (with answers) and puzzles asked by google, microsoft, amazon, yahoo, and facebook for SDE/Developer and SDET positions.
Telephone Words Using Recursion
Problem: Given a telephone number print or produce all the possible telephone words or combinations of letters that can represent the given telephone number.
Solution: O(3 ^ n) (approximately - since there are 2 digits that have 4 letters)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment