LeetCode 17. 電話號碼的字母組合(C++)
阿新 • • 發佈:2018-12-17
給定一個僅包含數字 2-9
的字串,返回所有它能表示的字母組合。
給出數字到字母的對映如下(與電話按鍵相同)。注意 1 不對應任何字母。
示例:
輸入:"23" 輸出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
說明: 儘管上面的答案是按字典序排列的,但是你可以任意選擇答案輸出的順序。
C++
class Solution { public: vector<string> letterCombinations(string digits) { int n=digits.length(); vector<string> ans; if(n==0) { return ans; } vector<string> res{""}; for(int i=0;i<n;i++) { int m=res.size(); switch(digits[i]) { case '2': for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res[j]+='a'; res[j+m]+='b'; res[j+m*2]+='c'; } break; case '3': for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res[j]+='d'; res[j+m]+='e'; res[j+m*2]+='f'; } break; case '4': for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res[j]+='g'; res[j+m]+='h'; res[j+m*2]+='i'; } break; case '5': for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res[j]+='j'; res[j+m]+='k'; res[j+m*2]+='l'; } break; case '6': for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res[j]+='m'; res[j+m]+='n'; res[j+m*2]+='o'; } break; case '7': for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res[j]+='p'; res[j+m]+='q'; res[j+m*2]+='r'; res[j+m*3]+='s'; } break; case '8': for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res[j]+='t'; res[j+m]+='u'; res[j+m*2]+='v'; } break; case '9': for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res.push_back(res[j]); } for(int j=0;j<m;j++) { res[j]+='w'; res[j+m]+='x'; res[j+m*2]+='y'; res[j+m*3]+='z'; } break; } } return res; } };