How can I print out all possible letter combinations a given phone number can represent?

前端 未结 30 2299
逝去的感伤
逝去的感伤 2020-12-22 18:01

I just tried for my first programming interview and one of the questions was to write a program that given a 7 digit telephone number, could print all possible combinations

30条回答
  •  长情又很酷
    2020-12-22 18:37

        private List strs = new List();        
        char[] numbersArray;
        private int End = 0;
        private int numberOfStrings;
    
        private void PrintLetters(string numbers)
        {
            this.End = numbers.Length;
            this.numbersArray = numbers.ToCharArray();
            this.PrintAllCombinations(this.GetCharacters(this.numbersArray[0]), string.Empty, 0);
        }
    
        private void PrintAllCombinations(char[] letters, string output, int depth)
        {
            depth++;
            for (int i = 0; i < letters.Length; i++)
            {
                if (depth != this.End)
                {
                    output += letters[i];
                    this.PrintAllCombinations(this.GetCharacters(Convert.ToChar(this.numbersArray[depth])), output, depth);
                    output = output.Substring(0, output.Length - 1);
                }
                else
                {
                    Console.WriteLine(output + letters[i] + (++numberOfStrings));
                }
            }
        }
    
        private char[] GetCharacters(char x)
        {
            char[] arr;
            switch (x)
            {
                case '0': arr = new char[1] { '.' };
                    return arr;
                case '1': arr = new char[1] { '.' };
                    return arr;
                case '2': arr = new char[3] { 'a', 'b', 'c' };
                    return arr;
                case '3': arr = new char[3] { 'd', 'e', 'f' };
                    return arr;
                case '4': arr = new char[3] { 'g', 'h', 'i' };
                    return arr;
                case '5': arr = new char[3] { 'j', 'k', 'l' };
                    return arr;
                case '6': arr = new char[3] { 'm', 'n', 'o' };
                    return arr;
                case '7': arr = new char[4] { 'p', 'q', 'r', 's' };
                    return arr;
                case '8': arr = new char[3] { 't', 'u', 'v' };
                    return arr;
                case '9': arr = new char[4] { 'w', 'x', 'y', 'z' };
                    return arr;
                default: return null;
            }
        }
    

提交回复
热议问题