uacs2024

导航

leetcode17-电话号码的字母组合

17. 电话号码的字母组合

这题还是看了题解才写出来。一开始不懂得每一层递归处理不同数字对应的字母,又想一些二维数组的操作,就搞复杂了。

题中的index就代表当前正在处理第几个数字对应的字母,循环中,压入这个之后就轮到下一个数字的对应字母,最后再返回。

想这种不知道会输入多少个数字的最好的方法就是递归,如果用for循环根本不知道要循环多少次

class Solution {
public:
    vector<string> map = {"","","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    vector<string> res;
    string path;
    int size;
    void letterTracking(string digits,int index)
    {
        if(index==size)
        {
            res.push_back(path);return;
        }
        int digit=digits[index]-'0';
        string letters=map[digit];
        for(int i=0;i<letters.size();i++)
        {
            path.push_back(letters[i]);
            letterTracking(digits,index+1);
            path.pop_back();
        }
    }   
    vector<string> letterCombinations(string digits) {
        size=digits.size();
        if(size==0) return res;   
        letterTracking(digits,0);
        return res;
    }
};

 

posted on 2022-09-23 20:03  ᶜʸᵃⁿ  阅读(11)  评论(0编辑  收藏  举报