LeetCode题解-17.电话号码的字母组合

题目

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。

给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

图片可参考一下代码想象

private string[] GetArray(char c)
        {
            switch (c)
            {
                case '2':
                    return new string[3] { "a", "b", "c" };
                case '3':
                    return new string[3] { "d", "e", "f" };
                case '4':
                    return new string[3] { "g", "h", "i" };
                case '5':
                    return new string[3] { "j", "k", "l" };
                case '6':
                    return new string[3] { "m", "n", "o" };
                case '7':
                    return new string[4] { "p", "q", "r", "s" };
                case '8':
                    return new string[3] { "t", "u", "v" };
                case '9':
                    return new string[4] { "w", "x", "y", "z" };
                default:
                    return new string[0];
            }
        }

思路

递归

代码

List<string> arrayString = new List<string>();

        public IList<string> LetterCombinations(string digits)
        {
            if (digits.Length == 0) return arrayString;
            string[][] doubleArrayS = new string[digits.Length][];

            for (int i = 0; i < doubleArrayS.Length; i++)
            {
                doubleArrayS[i] = GetArray(digits[i]);

            }
            backtrack(doubleArrayS, 0, "");
            return arrayString;
        }

        private void backtrack(string[][] doubleArrayS, int i, string addS)
        {
            foreach (string s in doubleArrayS[i])
            {
                string b = addS + s;
                int nextI = i + 1;
                if (nextI == doubleArrayS.Length)
                {
                    arrayString.Add(b);

                }
                else
                {
                    backtrack(doubleArrayS, nextI, b);
                }
            }
        }

        private string[] GetArray(char c)
        {
            switch (c)
            {
                case '2':
                    return new string[3] { "a", "b", "c" };
                case '3':
                    return new string[3] { "d", "e", "f" };
                case '4':
                    return new string[3] { "g", "h", "i" };
                case '5':
                    return new string[3] { "j", "k", "l" };
                case '6':
                    return new string[3] { "m", "n", "o" };
                case '7':
                    return new string[4] { "p", "q", "r", "s" };
                case '8':
                    return new string[3] { "t", "u", "v" };
                case '9':
                    return new string[4] { "w", "x", "y", "z" };
                default:
                    return new string[0];
            }
        }

 

posted @ 2021-12-06 15:45  冉水ay  阅读(36)  评论(0)    收藏  举报