電話號碼的字母組合

2021-10-10 04:56:09 字數 1844 閱讀 9842

給定乙個僅包含數字 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...