给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = "23" 输出:["ad","ae","af","bd","be","bf","cd","ce","cf"]
示例 2:
输入:digits = "" 输出:[]
示例 3:
输入:digits = "2" 输出:["a","b","c"]
提示:
0 <= digits.length <= 4
digits[i]
是范围['2', '9']
的一个数字。
class Solution {
public:
vector<string> letterCombinations(string digits) {
vector<string> result{""};
unordered_map<char, string> temp {
{'2', "abc"},
{'3', "def"},
{'4', "ghi"},
{'5', "jkl"},
{'6', "mno"},
{'7', "pqrs"},
{'8', "tuv"},
{'9', "wxyz"}
};
if(digits.empty()){
result.erase(result.begin());
return result;
}
string tp_ans;
for(char& c : digits){
int n = result.size();
for(int i=0;i<n;i++){
tp_ans = result[0];//先获取最头上的数据
result.erase(result.begin());//然后把改数据删除
for(const auto& tp : temp.at(c)){
result.push_back(tp_ans + tp);//添加到最后
}
}
}
return result;
}
};
result.erase//移除指定位置的元素
result.push_back()//末尾添加