zoukankan      html  css  js  c++  java
  • 第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);
                }
            }
            
        }
    }
  • 相关阅读:
    IDEA 2018 搭建 Spring MVC helloworld
    Intellij IDEA创建Spring的Hello World项目
    浅谈finally使用坑。
    ArrayList源码分析
    Spring依赖注入的四种方式(重点是注解方式)
    Spring常用的三种注入方式
    interview question
    待提高问题
    myeclipse svn 在线安装
    《SQL 进阶教程》 自连接排序
  • 原文地址:https://www.cnblogs.com/xiaobaidashu/p/11981310.html
Copyright © 2011-2022 走看看