Given a string containing digits from 2-9 inclusive, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below. Note that 1 does not map to any letters.
Example:
Input: "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].
Note: Although the above answer is in lexicographical order, your answer could be in any order you want.
class Solution {
public List<String> letterCombinations(String digits){
List<String> list=new ArrayList<>();
if(digits.length()==0 || digits==null) return list;
String[] mapping={
"0","1","abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"
};
helper(list,digits,0,"",mapping);
return list;
}
private void helper(List<String> list,String digits,int index,String cur,String[] mapping){
if(index==digits.length()){
list.add(cur);
return;
}
String letters=mapping[digits.charAt(index)-'0'];
for(int i=0;i<letters.length();i++){
helper(list,digits,index+1,cur+letters.charAt(i),mapping);
}
}
}