17 - Letter Combinations Of A Phone Number
#medium
Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent. Return the answer in any order.
A mapping of digits to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.

Example 1:
Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
Example 2:
Input: digits = ""
Output: []
Example 3:
Input: digits = "2"
Output: ["a","b","c"]
class Solution {
public:
vector<string> letters;
vector<string> result;
void backtracking( string digits, int startIndex, string one_result ) {
if ( digits.size() == startIndex ) {
result.push_back( one_result );
return;
}
int digit = digits[startIndex] - '0';
string letter = letters[digit-2];
for ( int i = 0; i < letter.size(); i++ ) {
one_result += letter[i];
backtracking( digits, startIndex + 1, one_result);
one_result.resize(one_result.size()-1);
}
}
vector<string> letterCombinations(string digits) {
letters.push_back( "abc" );
letters.push_back( "def" );
letters.push_back( "ghi" );
letters.push_back( "jkl" );
letters.push_back( "mno" );
letters.push_back( "pqrs" );
letters.push_back( "tuv" );
letters.push_back( "wxyz" );
int startIndex = 0;
if ( digits.size() == 0 ) return result;
backtracking( digits, startIndex, "" );
return result;
}
};