leetcode 17:电话号码的字母组合

本题与leetcode 22 类似,使用递归的方式

void letter(std::vector<std::string> &a,std::string digits,int number,std::map<char,std::vector<char>> m,std::string str){
    int len=digits.size();
    if(number==len){
        a.push_back(str);
        return;
    }
    char c=digits[number];
    std::vector<char> ss=m.at(c);
    
    for(int i=0;i<ss.size();i++){
        str+=ss[i];
        letter(a,digits,number+1,m,str);
        str = str.substr(0, str.length() - 1);
    }
}

std::vector<std::string> letterCombinations(std::string digits) {
    std::vector<std::string> a;
    std::map<char,std::vector<char>> m;
    m.insert(std::pair<char,std::vector<char>>('2',{'a','b','c'}));
    m.insert(std::pair<char,std::vector<char>>('3',{'d','e','f'}));
    m.insert(std::pair<char,std::vector<char>>('4',{'g','h','i'}));
    m.insert(std::pair<char,std::vector<char>>('5',{'j','k','l'}));
    m.insert(std::pair<char,std::vector<char>>('6',{'m','n','o'}));
    m.insert(std::pair<char,std::vector<char>>('7',{'p','q','r','s'}));
    m.insert(std::pair<char,std::vector<char>>('8',{'t','u','v'}));
    m.insert(std::pair<char,std::vector<char>>('9',{'w','x','y','z'}));
    if(digits.size()==0)
        return a;
    letter(a,digits,0,m,"");
    return a;
}

 

相关文章:

  • 2022-01-21
  • 2022-12-23
  • 2022-12-23
  • 2022-01-02
  • 2021-04-19
  • 2021-11-19
  • 2021-12-08
猜你喜欢
  • 2021-04-25
  • 2021-06-02
  • 2021-12-02
  • 2021-05-29
  • 2021-10-09
  • 2021-04-10
  • 2022-01-16
相关资源
相似解决方案