美文网首页
17.电话号码的字母组合

17.电话号码的字母组合

作者: oneoverzero | 来源:发表于2020-01-28 15:48 被阅读0次

    题目描述:
    见: https://leetcode-cn.com/problems/letter-combinations-of-a-phone-number/

    代码:

    class Solution(object):
        def letterCombinations(self, digits):
            """
            :type digits: str
            :rtype: List[str]
            """
            if not digits:
                return []
            mapping = {
                '2':'abc',
                '3':'def',
                '4':'ghi',
                '5':'jkl',
                '6':'mno',
                '7':'pqrs',
                '8':'tuv',
                '9':'wxyz'}
            res = [c for c in mapping[digits[0]]]
            for d in digits[1:]:
                res = [prev + cur for prev in res for cur in mapping[d]]
            return res
    

    从下到上的循环思路分析:

    字符串中可能会有多个数字,假设我们一个一个地将其中的数字取出。当取第一个数字时,可能会有三个或四个组合。然后当我们取第二个数字时,做一个全排列即可。关键是从第三个数字开始,每一个新来的数字都可以用到前面的结果,这样就避免了大量的重复。

    相关文章

      网友评论

          本文标题:17.电话号码的字母组合

          本文链接:https://www.haomeiwen.com/subject/khfmthtx.html