17.电话号码的字母组合
题目描述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例
示例1
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
示例2
输入:digits = “”
输出:[]
示例3
输入:digits = “2”
输出:[“a”,“b”,“c”]
思路
用一个栈,先压一轮,再不断往出来取,取出来的如果是倒数第二个,那么再加一个字母放到结果数组中,如果不是倒数第二个,那么加上下一个字母再压入栈。
算法
1.把第一个数字对应的压入栈
2.弹栈,检查当前长度+1是否是目标长度,如果是,则压入结果list,如果不是执行3
3.当前字符串+下个数字对应的字母,压栈
4.返回结果list
提交结果
执行用时:48 ms, 在所有 Python3 提交中击败了13.54%的用户
内存消耗:14.7 MB, 在所有 Python3 提交中击败了96.80%的用户
题目来源
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。