RETURN 所有键盘子序列
RETURN all the keypad subsequences
我们有一个 phone 键盘。使用它,我们必须找出可以使用输入 n 的数字组成的所有可能的字符串。我们必须 return 字符串而不是打印它。对于 0 和 1 return 空字符串。必须使用递归。
例如,对于 23,输出将是:- ad ae af bd be bf cd ce cf
这道题我试了很多,但我不会写代码。请帮助
我将递归调用创建字符串
class Solution{
public:
map<int,string> KeyMapping;
void generate_string(string ¤t, vector<int> &keys, vector<string> &ans){
if(current.size() == keys.size()){
ans.emplace_back(current);
return;
}
int index = (int)current.size();
for(char i: keyMapping[keys[index]]){
current+=i;
generate_string(current,keys,ans);
current.pop_back();
}
}
};
在main()
中使用
int main(){
vector<int> keys = {1,2};
string res = "";
Solution obj;
// Set keymapping to obj.keyMapping
vector<string> all;
obj.generate_string(res,keys,all);
for(auto i: all)cout << i << " ";
return 0;
}
我们有一个 phone 键盘。使用它,我们必须找出可以使用输入 n 的数字组成的所有可能的字符串。我们必须 return 字符串而不是打印它。对于 0 和 1 return 空字符串。必须使用递归。
例如,对于 23,输出将是:- ad ae af bd be bf cd ce cf
这道题我试了很多,但我不会写代码。请帮助
我将递归调用创建字符串
class Solution{
public:
map<int,string> KeyMapping;
void generate_string(string ¤t, vector<int> &keys, vector<string> &ans){
if(current.size() == keys.size()){
ans.emplace_back(current);
return;
}
int index = (int)current.size();
for(char i: keyMapping[keys[index]]){
current+=i;
generate_string(current,keys,ans);
current.pop_back();
}
}
};
在main()
int main(){
vector<int> keys = {1,2};
string res = "";
Solution obj;
// Set keymapping to obj.keyMapping
vector<string> all;
obj.generate_string(res,keys,all);
for(auto i: all)cout << i << " ";
return 0;
}