电话号码的字母组合(dfs,回溯,vector与string的关系leetcode17)-------------------c++实现
题目表述
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
样例
输入:digits = “23”
输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”]
条件
0 <= digits.length <= 4
digits[i] 是范围 [‘2’, ‘9’] 的一个数字。
思路
深搜
注意点
string的插入和删除和修改方法完全可以用vector的操作方法push_back(),pop_back();
如果给的是空值需要提前判断,否则会输入一个空string进入结果,会报错。
ac代码
c++:
class Solution {
public:
void dfs(string &digits,vector<string> &s,string &now,int x, vector<string> &result)
{
if(x==(digits.size()))
{ result.push_back(now);return;}
for(int i=0;i<s[digits[x]-'2'].size();i++)
{
now.push_back(s[digits[x]-'2'][i]); //也可用now.append(s[digits[x]-'2'],i,1);
dfs(digits,s,now,x+1,result);
now.pop_back(); //也可用now.erase(now.size()-1,1);
}
}
vector<string> letterCombinations(string digits) {
vector<string> s;
vector<string> result;//空值判断
if(!digits.size())
return result;
s.push_back("abc");
s.push_back("def");
s.push_back("ghi");
s.push_back("jkl");
s.push_back("mno");
s.push_back("pqrs");
s.push_back("tuv");
s.push_back("wxyz");
string now;
dfs(digits,s,now,0,result);
return result;
}
};
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/squares-of-a-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。