#include <vector>
#include <unordered_map>
class Solution {
public:
std::vector<std::string> phoneMap{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
std::vector<std::string> answers;
std::string answer;
std::vector<std::string> letterCombinations(std::string digits) {
std::string answer = "";
if(digits.empty())
return answers;
backtrack(0, digits);
return answers;
}
void backtrack(int n, string digits){
if(answer.size() == digits.size()){
answers.push_back(answer);
return;
}
char digit = digits.at(n);
int num = digit-'0';
string phone = phoneMap[num];
for(int i = 0; i < phone.size(); i++){
answer.push_back(phone[i]);
backtrack(n + 1, digits);
answer.pop_back();
}
}
};
Accepted
25/25 cases passed (0 ms)
Your runtime beats 100 % of cpp submissions
Your memory usage beats 39.22 % of cpp submissions (6.5 MB)