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;
        }
    }
    
  • 相关阅读:
    Django remedy a security issue refer dos attack
    AppScan8.7的两个细节亮点
    redis的使用
    IDEA使用技巧
    记录tips
    Scala实现wordcount
    Scala学习笔记1
    linux系统下访问window本地数据库
    python国内使用豆瓣下载源和linux常用的命令
    hadoop集群开启和停止执行命令
  • 原文地址:https://www.cnblogs.com/chenshaowei/p/12625966.html
Copyright © 2011-2022 走看看