LeetCode 17 — Letter Combinations of a Phone Number(電話號碼的字母組合)
阿新 • • 發佈:2019-01-06
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
Example:
Input: “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
Note:
Although the above answer is in lexicographical order, your answer could be in any order you want.
翻譯
給定一個僅包含數字 2-9 的字串,返回所有它能表示的字母組合。
給出數字到字母的對映如下(與電話按鍵相同)。注意 1 不對應任何字母。
示例:
輸入:“23”
輸出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
說明:
儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。
分析
由於不知道有幾個字元,所以用遞迴來做是最好理解的了,相當於套了n重的for迴圈。
c++實現
class Solution {
public:
vector<string> res;
vector< string> letterCombinations(string digits) {
if (digits == "")
return res;
zuhe(digits,0,"");
return res;
}
void zuhe(string digits,int i,string s) {
if (i == digits.length())
{
res.push_back(s);
return;
}
if (digits[i] == '2')
{
zuhe(digits,i+1,s+"a");
zuhe(digits,i+1,s+"b");
zuhe(digits,i+1,s+"c");
return;
}
if (digits[i] == '3')
{
zuhe(digits,i+1,s+"d");
zuhe(digits,i+1,s+"e");
zuhe(digits,i+1,s+"f");
return;
}
if (digits[i] == '4')
{
zuhe(digits,i+1,s+"g");
zuhe(digits,i+1,s+"h");
zuhe(digits,i+1,s+"i");
return;
}
if (digits[i] == '5')
{
zuhe(digits,i+1,s+"j");
zuhe(digits,i+1,s+"k");
zuhe(digits,i+1,s+"l");
return;
}
if (digits[i] == '6')
{
zuhe(digits,i+1,s+"m");
zuhe(digits,i+1,s+"n");
zuhe(digits,i+1,s+"o");
}
if (digits[i] == '7')
{
zuhe(digits,i+1,s+"p");
zuhe(digits,i+1,s+"q");
zuhe(digits,i+1,s+"r");
zuhe(digits,i+1,s+"s");
return;
}
if (digits[i] == '8')
{
zuhe(digits,i+1,s+"t");
zuhe(digits,i+1,s+"u");
zuhe(digits,i+1,s+"v");
return;
}
if (digits[i] == '9')
{
zuhe(digits,i+1,s+"w");
zuhe(digits,i+1,s+"x");
zuhe(digits,i+1,s+"y");
zuhe(digits,i+1,s+"z");
return;
}
}
};