Problem statement could be found @https://leetcode.com/problems/letter-combinations-of-a-phone-number/
This code is very simple and just works on the recursion.
Approach -
1. Create a mapping of digits and corresponding characters
2. For each digit given in the input, pick one character at a time from the mapping and then move to next digit.
Code snippet -
class Solution {
public:
map<char, string> dict;
string digits;
vector<string > retvec;
void init(){
dict[2] = "abc";
dict[3] = "def";
dict[4] = "ghi";
dict[5] = "jkl";
dict[6] = "mno";
dict[7] = "pqrs";
dict[8] = "tuv";
dict[9] = "wxyz";
}
void helper( int index, string s){
if ( index >= digits.length()){
retvec.push_back(s);
return ;
}
string x = dict[digits[index]-'0'];
for ( int i=0;i<x.length();i++){
helper(index+1, s+ x[i]);
}
}
vector<string> letterCombinations(string digits) {
this-> digits = digits;
if ( digits.length() == 0){
return retvec;
}
init();
string s;
helper(0, s);
return retvec;
}
};
This code is very simple and just works on the recursion.
Approach -
1. Create a mapping of digits and corresponding characters
2. For each digit given in the input, pick one character at a time from the mapping and then move to next digit.
Code snippet -
class Solution {
public:
map<char, string> dict;
string digits;
vector<string > retvec;
void init(){
dict[2] = "abc";
dict[3] = "def";
dict[4] = "ghi";
dict[5] = "jkl";
dict[6] = "mno";
dict[7] = "pqrs";
dict[8] = "tuv";
dict[9] = "wxyz";
}
void helper( int index, string s){
if ( index >= digits.length()){
retvec.push_back(s);
return ;
}
string x = dict[digits[index]-'0'];
for ( int i=0;i<x.length();i++){
helper(index+1, s+ x[i]);
}
}
vector<string> letterCombinations(string digits) {
this-> digits = digits;
if ( digits.length() == 0){
return retvec;
}
init();
string s;
helper(0, s);
return retvec;
}
};
No comments:
Post a Comment