Given a digit string, 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.
Input:Digit string “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
Note:
public class Solution {
HashMap<Character, char[]> map;
public List<String> letterCombinations(String digits) {
map=new HashMap<Character, char[]>();
char a='a';
for(char c='2';c<='6';c++)
{
char [] cs=new char[3];
for(int i=0;i<3;i++)cs[i]=(char) a++;
map.put(c, cs);
}
map.put('7', new char[]{'p', 'q','r','s'});
map.put('8', new char[]{'t','u','v'});
map.put('9', new char[]{'w', 'x', 'y','z'});
List<String> list=new ArrayList<String>();
StringBuffer path=new StringBuffer();
if(digits==null || digits.length()==0)return list;
helper(0, digits, path, list);
return list;
}
void helper(int index, String digits, StringBuffer path, List<String> list)
{
if(index==digits.length())
{
list.add(new String(path.toString()));
return;
}
char c=digits.charAt(index);
char[] cs=map.get(c);
for(int i=0;i<cs.length;i++)
{
path.append(cs[i]);
helper(index+1, digits, path, list);
path.deleteCharAt(path.length()-1);
}
}
}