《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'] 的一个数字。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。 -
上代码(经过线上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); } } } }