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