https://leetcode.com/problems/letter-combinations-of-a-phone-number/

Input: digits = "23"
Output: ["ad","ae","af","bd","be","bf","cd","ce","cf"]
void BT(string& input, vector<string>& output, unordered_map<char, vector<string>>& map, int index, string& letter)
{
	if (input.length() >0 && index >= input.length())
	{
		output.emplace_back(letter);
		return;
	}		
	else
	{
		char num = input[index]; // 2
		auto chars = map[num]; // a.b.c
		for (auto a : chars)
		{
			letter += a;
			BT(input, output, map, index + 1, letter);
			letter.pop_back();
		}
	}
}

class Solution {
public:
	vector<string> letterCombinations(string digits) {
		std::unordered_map<char, vector<string>> umap;
		vector<string> output;
		string letter="";
		umap['2'].push_back("a");
		umap['2'].push_back("b");
		umap['2'].push_back("c");

		umap['3'].push_back("d");
		umap['3'].push_back("e");
		umap['3'].push_back("f");

		umap['4'].push_back("g");
		umap['4'].push_back("h");
		umap['4'].push_back("i");

		umap['5'].push_back("j");
		umap['5'].push_back("k");
		umap['5'].push_back("l");

		umap['6'].push_back("m");
		umap['6'].push_back("n");
		umap['6'].push_back("o");

		umap['7'].push_back("p");
		umap['7'].push_back("q");
		umap['7'].push_back("r");
		umap['7'].push_back("s");

		umap['8'].push_back("t");
		umap['8'].push_back("u");
		umap['8'].push_back("v");

		umap['9'].push_back("w");
		umap['9'].push_back("x");
		umap['9'].push_back("y");
		umap['9'].push_back("z");
		
		BT(digits, output, umap, 0, letter);

		return output;
	}
};

Runtime: 0 ms, faster than 100.00% of C++ online submissions for Letter Combinations of a Phone Number.

Memory Usage: 7 MB, less than 31.09% of C++ online submissions for Letter Combinations of a Phone Number.