給定乙個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。
給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。
示例:輸入:「23」
輸出:[「ad」, 「ae」, 「af」, 「bd」, 「be」, 「bf」, 「cd」, 「ce」, 「cf」].
說明:儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。
通過次數189,825提交次數342,040
排列組合 的方法 怎麼計算分布的情況
//最關鍵的步驟
// 例子: 輸出: [ adm, adn, ado, aem, aen, aeo, afm, afn, afo, bdm, bdn, bdo, bem, ben, beo, bfm, bfn, bfo, cdm, cdn, cdo, cem, cen, ceo, cfm, cfn, cfo, ]
// 1. j / * returnsize 這一步是當前限定 比重概率 前面比如有27個資料
// ① 第乙個字元 前面9個是一樣的 ==> 例子:[axx, axx, axx, axx, axx, axx, axx, axx,]
// ② 第二個字元 前面3個是一樣的 ==> 例子: [adx adx, adx,]
// 2. 取於% 的數 正常的下標
做題的流程
#include #include #include /**
* note: the returned array must be malloced, assume caller calls free().
*/#define bool int
#define true 1
#define false 0
static const char* g_phone_number[10] = ;
bool check_digits(char * digits)
return true;
}char ** lettercombinations(char * digits, int* returnsize)
char * temp_digits = digits;
*returnsize = 1;
//求出組合的個數
while (*temp_digits != '\0')
++temp_digits;
}printf("size = %d\n", *returnsize);
char ** array = malloc(*returnsize * sizeof(char *));
if (!array)
for (int k = 0; k < *returnsize; ++k)
int len = strlen(digits);
int count = *returnsize;
for (int i = 0; i < len; ++i)
}*returnsize = count;
return array;
} int main(int argc, char *ar**)
int size = 0;
char * *array = lettercombinations(ar**[1], &size);
printf("[ ");
for (int i = 0; i < size; ++i)
free(array);
printf(" ]");
return 0;
}
電話號碼的字母組合
給乙個數字字串,每個數字代表乙個字母,請返回其所有可能的字母組合。下圖的手機按鍵圖,就表示了每個數字可以代表的字母。樣例給定 23 返回 ad ae af bd be bf cd ce cf 注意以上的答案是按照詞典編撰順序進行輸出的,不過,在做本題時,你也可以任意選擇你喜歡的輸出順序。class ...
電話號碼的字母組合
給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映關係如下 示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 注 輸出字串順序任意 我的 public class lettercombinationsofaphonenumber public...
電話號碼的字母組合
這是一道我刷題時遇到的乙個題目,很簡單,輸入數字,輸出這些數字構成的字元排列組合 由可以看出。given a string containing digits from 2 9 inclusive,return all possible letter combinations that the nu...