赞
踩
给定一个仅包含数字 2-9
的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。
加粗样式
示例:
输入:“23”
输出:[“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].
回溯
class Solution { Map<Character, String> map = new HashMap(); List<String> res = new ArrayList(); StringBuilder sb = new StringBuilder(); public List<String> letterCombinations(String digits) { if (digits.length() == 0) return res; map.put('2', "abc"); map.put('3', "def"); map.put('4', "ghi"); map.put('5', "jkl"); map.put('6', "mno"); map.put('7', "pqrs"); map.put('8', "tuv"); map.put('9', "wxyz"); backtrack(digits, 0); return res; } public void backtrack(String digits, int index){ if (index == digits.length()){ res.add(new String(sb)); return; } String str = map.get(digits.charAt(index)); for (int i = 0;i < str.length();i++){ sb.append(str.charAt(i)); backtrack(digits, index+1); sb.deleteCharAt(sb.length()-1); } } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。