《LeetCode力扣练习》第17题 电话号码的字母组合 Java

《LeetCode力扣练习》第17题 电话号码的字母组合 Java



一、资源

    题目: 给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。答案可以按 任意顺序 返回。 给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 示例 1: 输入:digits = “23” 输出:[“ad”,“ae”,“af”,“bd”,“be”,“bf”,“cd”,“ce”,“cf”] 示例 2: 输入:digits = “” 输出:[] 示例 3: 输入:digits = “2” 输出:[“a”,“b”,“c”] 提示: 0 <= digits.length <= 4 digits[i] 是范围 [2, 9] 的一个数字。 上代码(经过线上OJ测试) import java.util.*; /** * Created with IntelliJ IDEA. * * @author : DuZhenYang * @version : 2022.03.01 18:01:48 * description : */ public class LeetCode { public List<String> letterCombinations(String digits) { List<String> result =new ArrayList<>(); if(digits.length()==0){ return result; } HashMap<Character,String> phone =new HashMap<>(); phone.put(2,"abc"); phone.put(3,"def"); phone.put(4,"ghi"); phone.put(5,"jkl"); phone.put(6,"mno"); phone.put(7,"pqrs"); phone.put(8,"tuv"); phone.put(9,"wxyz"); backTrack(result,phone,digits,0,new StringBuffer()); return result; } private void backTrack(List<String> result, HashMap<Character, String> phone, String digits, int index, StringBuffer combination) { if(index==digits.length()){ result.add(combination.toString()); }else { char ch =digits.charAt(index); String letters =phone.get(ch); int lettersCount =letters.length(); for (int i=0;i<lettersCount;i++){ combination.append(letters.charAt(i)); backTrack(result,phone,digits,index+1,combination); combination.deleteCharAt(index); } } } }
经验分享 程序员 微信小程序 职场和发展