贵阳网站设计与开发怎么做,百度云服务器建设网站,wordpress如何发表新文章,seo百科1. 题目 
给定一个仅包含数字 2-9 的字符串#xff0c;返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下#xff08;与电话按键相同#xff09;。注意 1 不对应任何字母。  示例 1#xff1a; 输入#xff1a;digits  “23” 输出#…1. 题目 
给定一个仅包含数字 2-9 的字符串返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下与电话按键相同。注意 1 不对应任何字母。  示例 1 输入digits  “23” 输出[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] 示例2 输入digits  “” 输出[] 示例 3 输入digits  “2” 输出[“a”,“b”,“c”] 提示 0  digits.length  4 digits[i] 是范围 [‘2’, ‘9’] 的一个数字。 2. 编程实现 
2.1 思路 
如果输入长度为0直接返回没有排列组合如果输入长度是1那么直接就找对应按键上边的字母输出如果输入长度大于1例如是2 两个数字的排列组合 可以定义一个map表把字母与数组做一个关系对应 如 
typedef struct {int num;char character[5];
} map_t;map_t map[10]  {{0, {}},{1, {}},{3, {a,b,c}},{3, {d,e,f}},{3, {g,h,i}},{3, {j,k,l}},{3, {m,n,o}},{4, {p,q,r,s}},{3, {t,u,v}},{4, {w,x,y,z}},
}2.2 编程实现 
#include stdio.h
#include stdlib.h
#include string.htypedef struct {int num;char letters[5];
} map_t;map_t map[10]  {{0, {}},{1, {}},{2, {a, b, c}},{3, {d, e, f}},{4, {g, h, i}},{5, {j, k, l}},{6, {m, n, o}},{7, {p, q, r, s}},{8, {t, u, v}},{9, {w, x, y, z}},
};void generateCombinations(char* digits, int index, char* current, char** result, int* count) {if (digits[index]  \0) {current[index]  \0;result[(*count)]  strdup(current);(*count);} else {int digit  digits[index] - 0;for (int i  0; i  map[digit].num; i) {current[index]  map[digit].letters[i];generateCombinations(digits, index  1, current, result, count);}}
}char** letterCombinations(char* digits, int* returnSize) {int len  strlen(digits);char** result  (char**)malloc(sizeof(char*) * 10000);*returnSize  0;if (len  0) {return result;}char current[5]  {0};generateCombinations(digits, 0, current, result, returnSize);return result;
}int main() {char* digits  23; // 你可以修改这里的输入数字字符串int returnSize;char** result  letterCombinations(digits, returnSize);for (int i  0; i  returnSize; i) {printf(%s\n, result[i]);free(result[i]);}free(result);return 0;
}