C++:电话号码的字符组合
题目描述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23"
输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = ""
输出:[]
示例 3:
输入:digits = "2"
输出:["a","b","c"]
分析
本题可以考虑采用进制的思想来进行处理,首先计算出所有可能的组合数目,然后从0开始变量,每一个对应下标都对应着一种组合方式,只需根据对应的三进制或者四进制反解出该位的字符即可
如 “23”
对应的1-9种组合,分别用两个三进制表示就是00 01 02 10 11 12 20 21 22
而“27”
则可以用三进制与四进制混合来表示,每个字符对应进制取决于这个数字对应的字符个数
“27”共对应12种组合,用三进制混合四进制表示就是
00 01 02 03 10 11 12 13 20 21 22 23
实现