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

  • 相关阅读:
    235. Lowest Common Ancestor of a Binary Search Tree
    234. Palindrome Linked List
    233. Number of Digit One
    232. Implement Queue using Stacks
    231. Power of Two
    230.Kth Smallest Element in a BST
    229. Majority Element II
    228. Summary Ranges
    postgres 数组中获取最后一个元素的值
    excel 拆分单元格并填充上一行的数据
  • 原文地址:https://www.cnblogs.com/chruny/p/4835631.html
Copyright © 2011-2022 走看看