問題描述:
給定乙個僅包含數字 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...