zoukankan      html  css  js  c++  java
  • phone number

    problem description:

    you should change the given digits string into possible letter string according to the phone keyboards.

    i.e.

    input '23'

    output ['ad','ae','af','bd','be','bf','cd','ce','cf']

    the python solution 

    first you should realize this a iteration process, so you can use many iterate process to handle this problem.reduce fuction is a important iteration function in python.reduce(function , iterator, start),this is it's base form,the first function must have two parameter, the first parameter will be used to record the result,and the other just to fetch the number in the iterator.start can be omitted, then the fisrt result fetch from the iterator the first num,if not the start means the original result.After know the reduce fuction, we know can use it to solve this problem.

    in python:

    lists = ['a','b']

    for in in 'abc':

      lists += i 

    return lists

    then the lists will be ['aa','ab','ac','ba','bb','bc'],base on this feacture, so give the below solution 

    class Solution(object):
        def letterCombinations(self, digits):
            """
            :type digits: str
            :rtype: List[str]
            """
            if digits == '': return []
            phone = {'2':'abc','3':'def','4':'ghi','5':'jkl',
            '6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
            return reduce(lambda x,y:[a+b for a in x for b in phone[y]],digits, [''])

    this solution is so smart.Thanks to huxley  publish such a great  method to deal with this issue.

    I f you still can not understand this method, there is another simple way.

    class Solution(object):
        def letterCombinations(self, digits):
            """
            :type digits: str
            :rtype: List[str]
            """
            if len(digits) == 0:
                return []
            phone = {'2':'abc','3':'def','4':'ghi','5':'jkl',
            '6':'mno','7':'pqrs','8':'tuv','9':'wxyz'} 
           
            result = ['']
            for i in digits:
                temp = []
                for j in result:
                    for k in phone[i]:
                        temp.append(j + k)
                result = temp
            return result
  • 相关阅读:
    Oracle 跟踪sql 方法2
    [原] 通过客户端工具连接MySQL问题解决
    [原]文件比较小技巧
    JQuery上传插件Uploadify使用详解(转)
    sql 批量插入多条记录
    LinkButton中使用CommandArgument传递参数
    assembly、using(import)的区别(转)
    Ajax UpdatePanel 回传后滚动条位置变更解决方法
    Asp.net 动态加载css与js总结
    Treeview 分级加载方法
  • 原文地址:https://www.cnblogs.com/whatyouknow123/p/6702780.html
Copyright © 2011-2022 走看看