标签:style http color 使用 os io for ar
原题:
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来的太突然受宠若惊- 。-
【Leetcode长征系列】Letter Combinations of a Phone Number,布布扣,bubuko.com
【Leetcode长征系列】Letter Combinations of a Phone Number
标签:style http color 使用 os io for ar
原文地址:http://blog.csdn.net/u010239096/article/details/38733603