zoukankan      html  css  js  c++  java
  • [LeetCode]题解(python):017-Letter Combinations of a Phone Number

    题目来源:

    https://leetcode.com/problems/letter-combinations-of-a-phone-number/


    题意分析:

          这道题是输入一段数字字符digits,在手机上每个数字所对应不同的字符。具体对应如图:

    返回所有的数字字符对应的字符的可能。比如输入“123”,那么输出["*ad","*ae","*af","*bd","*be","*bf","*cd","*ce","cf"].


    题目思路:

          看到这道题目让我想起了向量的笛卡尔乘积。这道题目可以用类似DP的方法去解决。dp[n] = dp[n -1]X最后一个字符对应的字符串,其中"X"代表内积,也就是说f("123") = f("1") X f("2") X f("3").首先建立一个字典,d = {'0':' ','1':'*','2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'};然后对利用笛卡尔乘积做法得到答案。


    代码(python):

     1 class Solution(object):
     2     def addDigit(self,digit,ans):
     3         tmp = []
     4         for element in digit:
     5             if len(ans) == 0:
     6                 tmp.append(element)
     7             for s in ans:
     8                 tmp.append(s + element)
     9         return tmp
    10     def letterCombinations(self, digits):
    11         """
    12         :type digits: str
    13         :rtype: List[str]
    14         """
    15         ans = []
    16         d = {'0':' ','1':'*','2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
    17         for element in digits:
    18             ans = self.addDigit(d[element],ans)
    19         return ans
    View Code

    转载请注明出处:http://www.cnblogs.com/chruny/p/4835631.html

  • 相关阅读:
    URL提交之前对数据编码
    软件工程概论第三章概括
    软件工程概论第七章概括
    软件工程概论第四章概括
    软件工程概论第五章概括
    软件工程概论第一章概括
    《人月神话》观后感
    软件工程概论第六章概括
    软件工程概论第二章概括
    MySQL语句
  • 原文地址:https://www.cnblogs.com/chruny/p/4835631.html
Copyright © 2011-2022 走看看