首页 > 代码库 > LeetCode: Letter Combinations of a Phone Number [018]
LeetCode: Letter Combinations of a Phone Number [018]
【题目】
Given a digit string, 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.
Input:Digit string "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.
【题意】
给定一个一位数字[0-9]组合,确定其在拨号键盘上的所有可能的字母组合
【思路】
1. 创建键盘字符字典2. 用深度优先搜索DFS找出所有组合
【代码】
class Solution { public: map<int, vector<char> > dict; void dfs(vector<string>&result, string digits, int numIndex, string combination){ //numIndex-当前正在匹配的数字的索引位 //combination-当前已经生成的组合字符串 if(numIndex<digits.size() && (digits[numIndex]==‘1‘|| digits[numIndex]==‘0‘))numIndex++; //考虑1和0的情况 if(numIndex==digits.size()){ result.push_back(combination); return; } vector<char> chars = dict[digits[numIndex]]; for(int i=0; i<chars.size(); i++){ dfs(result, digits, numIndex+1, combination+chars[i]); } } vector<string> letterCombinations(string digits) { vector<string>result; dict[‘2‘].push_back(‘a‘); dict[‘2‘].push_back(‘b‘); dict[‘2‘].push_back(‘c‘); dict[‘3‘].push_back(‘d‘); dict[‘3‘].push_back(‘e‘); dict[‘3‘].push_back(‘f‘); dict[‘4‘].push_back(‘g‘); dict[‘4‘].push_back(‘h‘); dict[‘4‘].push_back(‘i‘); dict[‘5‘].push_back(‘j‘); dict[‘5‘].push_back(‘k‘); dict[‘5‘].push_back(‘l‘); dict[‘6‘].push_back(‘m‘); dict[‘6‘].push_back(‘n‘); dict[‘6‘].push_back(‘o‘); dict[‘7‘].push_back(‘p‘); dict[‘7‘].push_back(‘q‘); dict[‘7‘].push_back(‘r‘); dict[‘7‘].push_back(‘s‘); dict[‘8‘].push_back(‘t‘); dict[‘8‘].push_back(‘u‘); dict[‘8‘].push_back(‘v‘); dict[‘9‘].push_back(‘w‘); dict[‘9‘].push_back(‘x‘); dict[‘9‘].push_back(‘y‘); dict[‘9‘].push_back(‘z‘); dfs(result, digits, 0, ""); return result; } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。