Letter Combinations of a Phone Number

手机电话按键这道题挺有意思的,题目要求就是将数字组合转换成在能够在手机按键上生成的字符组合。这在电视剧《越狱》中有一个桥段就是通过分析手机的字符组合来知道主角的行踪。而在九宫格输入法里面,这样的组合算法也很常用。这里写链接内容


Given a digit string, return all possible letter combinations that the number could represent.
A mapping of digit to letters (just like on the telephone buttons) is given below.

Input:Digit string “23”
Output: [“ad”, “ae”, “af”, “bd”, “be”, “bf”, “cd”, “ce”, “cf”].


我们的做法就是先建立一个字典,把手机按键上所对应的的字符先写进内存中,然后再组合的时候各自查找并且融合就好了。
融合的方式就是两两融合,结果list先设置为空,然后对每一个数字进行处理,每一个输入都对应一个list,将这个list与上次的list融合成新的list就好了

附上python代码

class Solution(object):
    def gathering(self,list1, list2):
        if len(list1) == 0:
            return list2
        else:
            result_list = []
            for i in range(0, len(list1)):
                for j in range(0, len(list2)):
                    result_list.append(list1[i] + list2[j])
        return result_list

    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        phone_dict = {'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'],
        }

        result_list = []
        for s in digits:
            result_list = self.gathering(result_list, phone_dict[s])
        return result_list
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(Telephone Number Word Generator) Standard telephone keypads contain the digits 0 through 9. The numbers 2 through 9 each have three letters associated with them, as is indicated by the following table: Many people find it difficult to memorize phone numbers, so they use the correspondence between digits and letters to develop seven-letter words that correspond to their phone numbers. For example, a person whose telephone number is 686-2377 might use the correspondence indi- cated in the above table to develop the seven-letter word “NUMBERS.” Businesses frequently attempt to get telephone numbers that are easy for their clients to remember. If a business can advertise a simple word for its customers to dial, then no doubt the business will receive a few more calls. Each seven-letter word corresponds to exactly one seven-digit telephone number. The restaurant wishing to increase its take-home business could surely do so with the number 825-3688 (i.e., “TAKEOUT”). Each seven-digit phone number corresponds to many separate seven-letter words. Unfortunately, most of these represent unrecognizable juxtaposi- tions of letters. It’s possible, however, that the owner of a barber shop would be pleased to know that the shop’s telephone number, 424-7288, corresponds to “HAIRCUT.” A veterinarian with the phone number 738-2273 would be happy to know that the number corresponds to “PETCARE.” Write a program that, given a seven-digit number, writes to a file every possible seven-letter word corresponding to that number. There are 2187 (3 to the seventh power) such words. Avoid phone numbers with the digits 0 and 1.
06-09

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值