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

    1、题目描述

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

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

    示例:

      输入:"23"

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

    2、题解

    2.1、解法一

      原理:回溯算法

    class Solution:
        dic = {
            "2": ["a", "b", "c"],
            "3": ["d", "e", "f"],
            "4": ["g", "h", "i"],
            "5": ["j", "k", "l"],
            "6": ["m", "n", "o"],
            "7": ["p", "q", "r", "s"],
            "8": ["t", "u", "v"],
            "9": ["w", "x", "y", "z"],
        }
    
        def sum_letter(self, l1, l2):
            ret = []
            for i in range(len(l1)):
                for j in range(len(l2)):
                    ret.append(l1[i]+l2[j])
            return ret
    
        def letterCombinations(self, digits):
            """
            :type digits: str
            :rtype: List[str]
            """
            n = len(digits)
            if n == 0:
                return []
            first = digits[0]
            other = digits[1:]
            if len(digits) == 1:
                return self.dic[digits]
            ret = self.sum_letter(self.dic[first],self.letterCombinations(other))
            return ret
    

      

  • 相关阅读:
    清除浮动的四种方式
    简单的响应式-信息介绍
    Island Mentality
    六、排序-插入排序
    五、快速排序
    有关一些话
    有关学习态度
    无题
    四、链表的学习
    MySQ彻底删除与安装配置
  • 原文地址:https://www.cnblogs.com/bad-robot/p/10064909.html
Copyright © 2011-2022 走看看