leetcode相关C++算法解答: https://github.com/Nereus-Minos/C_plus_plus-leetcode
题目:
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
实例:
输入:“23” 输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
思路:
1.特殊情况为“”则返回{}
2. 首先求出返回值的总容量,分配好空间;
3.使用一个中间数组temp辅助组合;temp存放的是上一次res组合的数据,根据temp,在res重新组合数据。
4.例如“23”:
第一步我们会得到capacity=9;然后res分配9个空间
当digits[i]‘2’,temp根据res分配一个空间为空,最后res=[a,b,c];
当digits[i]‘3’,temp=[a,b,c],res=[aa,ab,ac,ba,bb,bc,ca,cb,cc]
代码:
class Solution {
public:
vector<string> letterCombinations(string digits) {
//特殊情况
if(digits.s