我们有一个电话键盘。使用它我们必须找出所有可能的字符串,可以用输入的数字n来制作。我们必须返回字符串,而不是打印。对于0和1返回空字符串。必须使用递归。
例如对于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;
}