任务六 电话号码的字母组合和全排列 python解法

题目1 电话号码的字母组合(17)

给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。
给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。

代码:

# 递归思想
class Solution(object):
    def letterCombinations(self, digits):
        """
        :type digits: str
        :rtype: List[str]
        """
        dic1={'2':'abc','3':'def','4':'ghi','5':'jkl','6':'mno','7':'pqrs','8':'tuv','9':'wxyz'}
        res = []
        lending =len(digits)
        if lending ==0:
            return res
        elif lending ==1:
            return list(dic1[digits[0]])
        else:
            result = self.letterCombinations(digits[0:lending-1])
            for i in result:
                for j in dic1[digits[-1]]:
                    res.append(i+j)
        return res

结果:
在这里插入图片描述

题目2 全排列(46)

给定一个没有重复数字的序列,返回其所有可能的全排列。

代码:

# 递归思想
class Solution(object):
    def permute(self, nums):
        """
        :type nums: List[int]
        :rtype: List[List[int]]
        """
        if len(nums) <= 1:
        res=[]
        for i in range(len(nums)):
            list_one = self.permute(nums[0:i]+nums[i+1:])
            for j in list_one:
                res.append([nums[i]] + j)
        return res

结果:
在这里插入图片描述

总结:
常用的数据结构,看似简单,却需要在例子中不断的加深理解,递归和动态规划更是不容易理解的,比较难掌握。这次编程训练增强了编程能力,至少提高了代码理解能力,自己写还是有困难,此外,对数据的类型理解深刻一些了,也会更注意一些,不然程序到处是错,跑不动。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值