zoukankan      html  css  js  c++  java
  • LeetCode-17:*的字母组合

    问题描述如下图:

    问题重述:给定一个由若干个数字组成的字符串,根据图中每个数字所代表的字母,输出该数字字符串表示的所有的字母组合。

    解决方法:回溯,代码参考了LeetCode的官方题解。

    代码如下:

     1 class Solution {
     2     String[] phone = {"abc","def","ghi","jkl","mno","pqrs","tuv","wxyz"};
     3     
     4     List<String> output = new ArrayList<>(); //结果集
     5 
     6     /**
     7      * 回溯
     8      * @param combination 已经走过的路径
     9      * @param nextDigits 下一步可供选择的路径,本题中nextDights是接下来数字字符串中的数字
    10      */
    11     public void backtrack(String combination, String nextDigits){
    12         if(nextDigits.length() == 0) { //走到最后一步,没有路径可走时候,结束
    13             output.add(combination);
    14         }else{
    15             char digit = nextDigits.charAt(0); //取出开头的数字,得到其对应的字符串
    16             String letters = phone[digit - '2'];
    17             for(int i = 0; i < letters.length(); i++){
    18                 char letter = phone[digit - '2'].charAt(i); //取出第i个字符,作为当前步骤的选择,并基于该路径
    19                 backtrack(combination + letter, nextDigits.substring(1)); //进行下一步的回溯
    20             }
    21         }
    22     }
    23 
    24     public List<String> letterCombinations(String digits) {
    25         if (digits.length() != 0)
    26             backtrack("", digits);
    27         return output;
    28     }
    29 }
  • 相关阅读:
    yield* 表达式
    Set 对象和WeakSet对象
    洗牌算法
    filter() 方法创建一个新数组
    UTF8文件带BOM引起的问题
    ios的白屏坑
    css的字体样式怎么写
    npm全局安装失效修复
    nginx: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)解决方案
    linux下nginx的安装及配置
  • 原文地址:https://www.cnblogs.com/zhang-yi/p/12812263.html
Copyright © 2011-2022 走看看