Leetcode 17. Letter Combinations of a Phone Number

https://leetcode.com/problems/letter-combinations-of-a-phone-number/

class Solution {
public:
    string mapping[8]={"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
    void get_string(string &digits,int l,vector<string> &ans,string &x){
        if(l==digits.size()){
            ans.push_back(x);
            return;
        }
        for(auto &e:mapping[digits[l]-'2']){
            x.push_back(e);
            get_string(digits,l+1,ans,x);
            x.pop_back();
        }
        
        
    }
    vector<string> letterCombinations(string digits) {
        /*
        注意考虑digits空的情况。
        */
        vector<string> ans;
        if(digits.empty()) return ans;
        string x;
        get_string(digits,0,ans,x);
        return ans;
    }
};

python版本

digit2letter=['abc','def','ghi','jkl','mno','pqrs','tuv','wxyz']

def get_letter(digits,ans,idx,tmp):
    if idx==len(digits):
        ans.append(''.join(tmp))
        return
    i=int(digits[idx])-2
    for v in digit2letter[i]:
        tmp.append(v)
        get_letter(digits,ans,idx+1,tmp)
        tmp.pop()
class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
        ans=[]
        if len(digits)==0:
            return ans
        get_letter(digits,ans,0,[])
        return ans        


posted @ 2019-05-03 08:23  benda  阅读(77)  评论(0编辑  收藏  举报