遍历之前先给一个res={""}
每个数字对应一个字符串,将该字符串加入到结果中每个字符串的最后边
for(string s :result)
遍历result中的每一个字符串并将其赋值给s
例如23
result开始为{“”}
读入2
先将{“”}赋值给tmp暂时保存,给result的每一个元素s都加上2对应的a,添加到tmp后,再给result的每一个元素s都加上2对应的b,添加到tmp后,再给result的每一个元素s都加上2对应的c,添加到tmp后,最后将tmp赋值给result
result更新为{“a”,“b","c"}
读入3
先将{“a”,“b","c"}赋值给tmp暂时保存,给result的每一个元素s都加上3对应的d,添加到tmp后,再给result的每一个元素s都加上3对应的e,添加到tmp后,再给result的每一个元素s都加上3对应的f,添加到tmp后,最后将tmp赋值给result
result更新为["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
class Solution {
public:
vector<string> letterCombinations(string digits) {
vector<string> dict{"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
int len=digits.length();
if(len==0){
return {};
}
vector<string> result{""};
for(int i=0;i<len;i++){
vector<string> tmp;
string d=dict[digits[i]-'0'];
for(int j=0;j<d.length();j++){
for(string s :result){
tmp.push_back(s+d[j]);
}
}
result=tmp;
}
return result;
}
};