• 第17题:*的组合


    一. 问题描述

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。

    给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

    示例:

    输入:"23"

    输出:["ad", "ae", "af", "bd", "be", "bf", "cd", "ce", "cf"].

    二. 解题思路

    本题思路:采用递归进行求解,非常简单,通过递归,只考虑到当前一次递归的所有解,当递归到最后时则可输出。

    步骤一:构建递归函数(全局列表list,当前递归的数字位数number,当前的解digits,全局输入写temp,和对应字符串的数组)。

    步骤二:当number==digits的值时,则说明当前解已经结束,将解添加到list中,否则的话循环当前number中的每一个字母,将其分别添加到temp中,并进行递归,直到所有解结束。

    步骤三:输出list.

    三. 执行结果

    执行用时 :0 ms, 在所有 java 提交中击败了100.00%的用户

    内存消耗 :35.7 MB, 在所有 java 提交中击败了76.58%的用户

    四. Java代码

    class Solution {
        public List<String> letterCombinations(String digits) {
              String []num= {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
            List<String> list=new ArrayList<String>();
            if(digits.equals("")) {
                return list;
            }
            getlist(list,0,"",digits,num);
            return list;
        }
         public void getlist(List<String> list,int number,String temp,String digits,String[]num) {
            if(number==digits.length()) {
                list.add(temp);
                return;
            }else {
                int select=digits.charAt(number)-'0';
                for(int i=0;i<num[select-2].length();i++) {
                    String alltemp=temp+num[select-2].charAt(i);
                    getlist(list,number+1,alltemp,digits,num);
                }
            }
            
        }
    }
  • 相关阅读:
    Jquery实现类似百度的搜索框
    Spring mvc 初始化过程
    Git学习笔记(2)-Eclipse中Git插件使用
    Git学习笔记(1)
    Tomcat7设置环境变量供java代码读取
    webpack+gulp实现自动构建部署
    netty 粘包问题处理
    java 并发工具类CountDownLatch & CyclicBarrier
    add spring-boot modules to maven project
    Spring Boot (#1 quick start)
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/11981310.html
Copyright © 2020-2023  润新知