1、描述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
示例 1:
输入:digits = “23” 输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
来源:力扣(LeetCode) 链接: 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
2、关键字
键盘数字对应的字符串,输出,
3、思路
一看就是回溯, 感觉这个简单点 去看代码
4、notes
先把board字符串数组搞好, 然后根据输入的数字,去对应到board上,进行回溯
5、复杂度
时间:O【3的(n)次方 * 4 的(m)次方】 空间:【m+n】 m输入中对应 3 个字母的数字个数,n 是4的个数
6、code
class Solution {
public:
vector<string> res;
string tem;
vector<string> board={"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
void traceback(int pos,string digits){
if(pos == digits.size()){
res.push_back(tem);
return;
}
int num = digits[pos] - '0';
for(int i = 0; i < board[num].size(); i++){
tem += board[num][i];
traceback(pos+1,digits);
tem.pop_back();
}
}
vector<string> letterCombinations(string digits) {
if(digits.size() == 0) return res;
traceback(0,digits);
return res;
}
};
|