題目描述
給定乙個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。
給出數字到字母的對映如下(與**按鍵相同)。注意 1 不對應任何字母。
示例:輸入:「23」
輸出:[「ad」, 「ae」, 「af」, 「bd」, 「be」, 「bf」, 「cd」, 「ce」, 「cf」].
解題思路用遞迴recursion來解,我們需要建立乙個字典,用來儲存每個數字所代表的字串,然後我們還需要乙個變數level,記錄當前生成的字串的字元個數,實現套路和上述那些題十分類似。在遞迴函式中我們首先判斷level,如果跟digits中數字的個數相等了,我們將當前的組合加入結果res中,然後返回。否則我們通過digits中的數字到dict中取出字串,然後遍歷這個取出的字串,將每個字元都加到當前的組合後面,並呼叫遞迴函式即可,參見**如下:
class solution ;
vectorres;
string dict = ;
lettercombinationsdfs(digits, dict, 0, "", res);
return res;
}void lettercombinationsdfs(string digits, string dict, int level, string out, vector&res)
string str = dict[digits[level] - '0'];
for (int i = 0; i < str.size(); ++i) }};
用迭代iterative來解,在遍歷digits中所有的數字時,我們先建立乙個臨時的字串陣列t,然後跟上面解法的操作一樣,通過數字到dict中取出字串str,然後遍歷取出字串中的所有字元,再遍歷當前結果res中的每乙個字串,將字元加到後面,並加入到臨時字串陣列t中。取出的字串str遍歷完成後,將臨時字串陣列賦值給結果res,具體實現參見**如下:
class solution ;
vectorres;
string dict = ;
for (int i = 0; i < digits.size(); ++i)
res = t;
}return res;}};
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...