leetcode 17 電話號碼的字母組合

2021-09-07 00:08:26 字數 1762 閱讀 9061

問題描述:

給定乙個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。

給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。

問題連線

leetcode

示例

輸入:"23"

輸出:[

"ad"

,"ae"

,"af"

,"bd"

,"be"

,"bf"

,"cd"

,"ce"

,"cf"

].

**
class

solution,,

,,,,

,}; list

result =

newarraylist

<

>()

;char

tem =

newchar

[digits.

length()

];char

temp =

newchar

[digits.

length()

];for(

int i =

0; i < digits.

length()

; i ++

)//在這上面都是為了讓digits出現的字串中的字元 所對應的字元陣列組合成乙個二維陣列,第一行是第乙個字元會出現的可能 第二行是第二個字元出現的可能 。。。。。 直到最後

build

(result, temp, tem,0)

;//這個函式是乙個遞迴函式 每次遞迴 都是將拿到的字元放入tem陣列

//比如: 輸入的是"23"

//那麼我們組成的二維陣列temp為

//,//}

//在build 中執行軌跡是:

//第一次進入:result 為空 ,temp 上面給出,tem.size = 2,idx = 0;

// foreach 迭代 temp[0]

// tem[0] = 'a';

//if判斷為false 進入第二次

//第二次進入:result為空,temp沒有變,tem[0] = a 其他為空 idx = 1

//foreach 迭代temp[1]

//tem[1] = 'd';

//if 判斷為true result加入tem字元陣列組成的字串,'ad'

//再進入迴圈

//temp[1] 第二個char

//tem[1] = 'e';

//if 判斷成立true result加入tem字元陣列組成的字串,'ae'

//再進入迴圈

//temp[2] 第二個char

//tem[2] = 'f';

//if 判斷成立true result加入tem字元陣列組成的字串,'af'

// 這裡又回到了第一次進入 的迭代 的第一次迭代結束 再次開始迭代 進入第二次迭代 和上面類似

// 結果是 二維陣列每個組合都遍歷了一次 形成集合

return result;

}private

static

void

build

(list

result,

char

temp,

char

tem,

int idx)

else}}

}

Leetcode17 電話號碼組合

leetcode17 號碼組合 給定乙個僅包含數字 2 9 的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 思路 大家都能想到,我每次從裡面選擇乙個數,然後把所有的可能...

leetcode 17 電話號碼的字母組合

題目描述 給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf 實現 string num 10 class solution private tem...

LeetCode17電話號碼的字母組合

給定乙個僅包含數字2 9的字串,返回所有它能表示的字母組合。給出數字到字母的對映如下 與 按鍵相同 注意 1 不對應任何字母。示例 輸入 23 輸出 ad ae af bd be bf cd ce cf class solution def lettercombinations self,digit...