Letter Combinations of a Phone Number
Last updated
Last updated
Input: "23"
Output: ["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].class Solution {
public List<String> letterCombinations(String digits) {
char[][] charArr =
{
{},
{},
{'a','b','c'},
{'d','e','f'},
{'g','h','i'},
{'j','k','l'},
{'m','n','o'},
{'p','q','r','s'},
{'t','u','v'},
{'w','x','y','z'}
};
List<String> res = new ArrayList<>();
if(digits == null || digits.length() == 0)
return res;
StringBuilder cur = new StringBuilder();
backtracking(res,cur,0,digits,charArr);
return res;
}
public void backtracking(List<String> res, StringBuilder cur, int l, String digits,char[][] charArr){
if(l == digits.length()){
res.add(cur.toString());
return;
}
for(char c : charArr[digits.charAt(l)-'0']){
cur.append(c);
backtracking(res,cur,l+1,digits,charArr);
cur = cur.deleteCharAt(cur.length()-1);//o(n)
}
}
}