問題描述:
給定一個僅包含數字 2-9 的字符串,返回所有它能表示的字母組合。
給出數字到字母的映射如下(與電話按鍵相同)。注意 1 不對應任何字母。
示例:
輸入:"23"
輸出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
說明:
儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。
解法一:
一個數字一個數字找(窮舉法)。
class Solution {
public:
vector<string> letterCombinations(string digits) {
vector<string> a{"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
vector<string> c;
if(digits.empty()) return c;
c.push_back("");
for(int i = 0; i < digits.length(); i++){
int res = digits[i] - '2';//當前按鍵對應的字符串索引
int len = c.size();//前一次處理好的字符串數
for(int j = 0; j < len; j++){
for(int m = 0; m < a[res].length(); m++){
c.push_back(c[j] + a[res][m]);
}
}
c.erase(c.begin(),c.begin() + len);
}
return c;
}
};