• leetcode电话号码的字母组合


     自己没搞出来,只能借鉴别人实现,自己再实现了

     递归解法

    1. public class LetterCombinations {
    2. List strings = new ArrayList<>();
    3. StringBuilder builder = new StringBuilder();
    4. public List letterCombinations(String digits) {
    5. if(digits.isEmpty()) return strings;
    6. String[][] mapper = {{"a","b","c"},{"d","e","f"},{"g","h","i"},{"j","k","l"}
    7. ,{"m","n","o"},{"p","q","r","s"},{"t","u","v"},{"w","x","y","z"}};
    8. letterCombinations(mapper, 0, digits);
    9. return strings;
    10. }
    11. public void letterCombinations(String[][] mapper, int inx, String digits) {
    12. //这里是返回每个组合的关键,也是递归跳出的关键
    13. if(inx == digits.length()) {
    14. strings.add(builder.toString());
    15. return;
    16. }
    17. int index = digits.charAt(inx) - 50;
    18. for (int i = 0; i < mapper[index].length; i++) {
    19. builder.append(mapper[index][i]);
    20. letterCombinations(mapper, inx + 1, digits);
    21. //每次返回一个组合后,要把上次存进去的删掉,不然会串到一块
    22. builder.deleteCharAt(builder.length() - 1);
    23. }
    24. }
    25. }

     非递归,直接遍历,一种巧妙的方式

    1. public static List letterCombinations(String digits) {
    2. List result = new ArrayList<>();
    3. if(digits == null || digits.length() == 0) {
    4. return result;
    5. }
    6. String[] mapping = new String[] {"", "", "abc", "def", "ghi", "jkl", "mno", "pqrs", "tuv", "wxyz"};
    7. result.add("");
    8. for(int i = 0; i < digits.length(); i++) {
    9. List temp = new ArrayList<>();
    10. String letters = mapping[digits.charAt(i) - '0'];
    11. for(int j = 0; j < letters.length(); j++) {
    12. //上一轮拼接结果和这一轮的字符拼接
    13. for(String s : result) {
    14. temp.add(s + letters.charAt(j));
    15. }
    16. }
    17. //将上一轮拼接结果返回给下一轮去使用
    18. result = temp;
    19. }
    20. return result;
    21. }

  • 相关阅读:
    Spring Boot是什么?
    TortoiseSVN小乌龟的使用
    Python-面向对象(类的组成,特殊方法和参数,私有化)
    Fatal error: cstring: No such file or directory
    现货黄金如何拜师学艺?
    别玩手机 图像分类比赛
    提供有效的绩效评估
    RemObjects Suite Subscription for Delphi
    Tidb简介与应用实践
    电子标签模块:让传感器智能化,工程安全监测更便捷
  • 原文地址:https://blog.csdn.net/z275598733/article/details/136760241