此题是面试遇见的一道题,当时出的是笛卡尔积,和这个其实道理是一样的。
此题如果用标准的回溯做,是会出问题的。一开始做的时候,我是把他当全排列做的。
但全排列是没有重复状态的,每次选一个。一个状态的前继状态只有一种可能。但笛卡尔积问题是不止一个前继状态,有重复节点就很难记录,所以此题采用迭代+队列来做是最好的。
class Solution {
public:
vector<string> letterCombinations(string digits) {
int n = digits.size();
vector<string> ans;
if(n == 0)return ans;
vector<string> v{
"abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
queue<string>