这个题目的难点主要在循环这部分,感觉temp省了不少事。另外:strs.swap(temp)也是头一次知道这个用法。不过O(n3)居然这次么有超时,很神奇
class Solution {
public:
vector<string> letterCombinations(string digits) {
vector<string> strs;
if(digits.size()==0) return strs;
vector<string> v={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
strs.push_back("");
for(int i=0;i<digits.size();i++)
{
int digit=digits[i]-'0';
vector<string> temp;
for(int j=0;j<v[digit].size();j++)
{
for(int k=0;k<strs.size();k++)
{
string str=strs[k]+v[digit][j];
temp.push_back(str);
}
}
strs.swap(temp); //交换strs和temp两个向量中的元素
}
return strs;
}
};