首页 > 代码库 > 【Leetcode长征系列】Letter Combinations of a Phone Number
【Leetcode长征系列】Letter Combinations of a Phone Number
原题:
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.
思路:涉及到排列组合问题,使用递归专门处理组合问题。一开始老是runtime error,主要问题出在string char以及const char的转换上,比较烦人。思路比较简单的。
代码:
class Solution { public: vector<string> letterCombinations(string digits) { vector<string> res, tmp; if(digits.size()==0) { string str = ""; res.push_back(str); return res; } for (int i = 0; i<digits.size(); i++){ string accord = digitString(digits[i]); tmp.push_back(accord); } return makecombine(tmp.begin(),tmp.end()); } vector<string> makecombine(vector<string>::iterator first, vector<string>::iterator last){ vector<string> res,tmp; if(first==last) return res; tmp = makecombine(first+1,last); for(string::iterator it = (*first).begin(); it!=(*first).end(); it++){ if(tmp.empty()) { string t = ""; t = t + *it; res.push_back(t); } else { for(int j = 0; j<tmp.size(); j++){ string t = ""; t = *it; t = t+tmp[j]; res.push_back(t); } } } return res; } string digitString(char a){ string str= ""; if (a-'0'==0) str =' '; else if(a -'0'== 1) ; else if(a -'0'== 2) str = "abc"; else if(a -'0'== 3) str = "def"; else if(a -'0'== 4) str = "ghi"; else if(a -'0'== 5) str = "jkl"; else if(a -'0'== 6) str = "mno"; else if(a -'0'== 7) str = "pqrs"; else if(a -'0'== 8) str = "tuv"; else if(a -'0'== 9) str = "wxyz"; return str; } };AC来的太突然受宠若惊- 。-
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。