首页 > 其他 > 详细

电话号码的字母组合 leetcode 17

时间:2020-01-02 16:22:58      阅读:70      评论:0      收藏:0      [点我收藏+]

1.解题思路

利用回溯法框架

2.代码及注释

class Solution {
public:
    //定义全局变量phone记录各个(按键-2)所对应的字符串
    vector<string>phone {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    //定义全局变量v为结果数组,初始化为空的容器
    vector<string> v {};
    //回溯法遍历 digits为按键字符串,ans为进行到当前第k个按键所对应的当前字符串,k表示为第几个按键
    void back_track(string digits,string ans,int k){
        //如果当前进行到第digits.size()个按键则说明已经组合完成,添加至v中。
        if(k==digits.size()){
            v.push_back(ans);
        }else{
            //num代表所按的按键对应于phone的第几个字符串,需要-2
            int num = digits[k]-0-2;
            //保存ans用于下面ans改变后恢复
            string t = ans;
            //遍历
            for(int i=0;i<phone[num].size();i++){
                ans+=phone[num][i];
                back_track(digits,ans,k+1);
                ans=t;
            }
        }
        return ;
    }
    vector<string> letterCombinations(string digits) {
        if(digits.size()==0) return v;
        back_track(digits,"",0);
        return v;
    }
};

电话号码的字母组合 leetcode 17

原文:https://www.cnblogs.com/moumangtai/p/12133250.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!