zoukankan      html  css  js  c++  java
  • Leet Code 17.*的字母组合

    给定一个仅包含数字2-9的字符串,返回所有它能表示的字母组合。给出数字到字母的映射与电话按键相同。

    思路

    如何表示数字与字母的映射是一个问题,这个问题解决了,题目也就容易解决了。用哪个数据结构呢?Map。

    2--abc
    3--def
    4--ghi
    ···
    

    解决完映射后,将输入的数字字符串遍历,将映射中的字母循环组合,即可遍历所有能表示的字母组合。可是这样的话,好几层循环,有没有更快的遍历方式?递归。

    看了网上其他人的解题方式,DFS搜索,遍历所有的可能性。也有用队列的。

    提交代码

    import java.util.*;
    
    public class leetcode {
        public static void main(String[] args) {
            Scanner scan = new Scanner(System.in);
            String digit_str = scan.nextLine();
            List<String> result= letterCombinations(digit_str);
            System.out.println(result);
        }
    
        static Map<String, String> phone = new HashMap<>(){{
            put("2","abc");
            put("3","def");
            put("4","ghi");
            put("5","jkl");
            put("6","mno");
            put("7","pqrs");
            put("8","tuv");
            put("9","wxyz");
        }};
    
        static List<String> output = new ArrayList<>();
    
        public static void backtrack(String combination, String next_digits) {
            if (next_digits.length() == 0 ) {
                output.add(combination);
            }
            else {
                String digit = next_digits.substring(0,1);
                String letters = phone.get(digit);
                for(int i =0; i<letters.length(); i++) {
                    String letter = letters.substring(i,i+1);
                    backtrack(combination+letter, next_digits.substring(1));
                }
            }
        }
    
        public static List<String> letterCombinations(String digits) {
            if(digits.length() != 0)
                backtrack("", digits);
            return output;
        }
    }
    
  • 相关阅读:
    PHP断点续传(下载)代码
    PHP及相关服务器防盗链
    工作过程中注意事项(一)
    ubuntu下libtorrent库安装
    ubuntu ftp 服务器搭建
    ubuntu系统搭建php+apache+cumulusclips
    JavaScript HTML DOM 元素(节点)
    JavaScript 闭包
    安装安卓(Android)x86系统
    javascript 错误与调试
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12625966.html
Copyright © 2011-2022 走看看