zoukankan      html  css  js  c++  java
  • 17.*的字母组合

    from typing import List
    import collections
    # 这道题可以用深搜或者广搜来解决
    class Solution:
    def letterCombinations(self, digits: str) -> List[str]:
    ##先定义数字和字母的字典
    dic = {"2": "abc", "3": "def", "4": "ghi", "5": "jkl", "6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz"}
    # 定义变量用来接收最后的结果
    self.res = []
    # 如果字符串为空就返回空
    if len(digits) == 0:return self.res
    # 定义一个双端队列。
    deque = collections.deque()
    # 注意这里,要添加一个为空的东西。
    deque.append("")
    # 进行遍历。首先需要遍历传入的字符串。
    for index1 in range(len(digits)):
    # 然后遍历次数为双端队列的长度。
    for index2 in range(len(deque)):
    # 取得每一个数字对应的字母的值。
    now_str = dic[digits[index1]]
    print(now_str)
    # 将队列最左端的字符踢出,用来和对应字母相加。
    now_deque_str = deque.popleft()
    # 遍历每一个数字对应的字母
    for index3 in now_str:
    print(111)
    # 注意这里,是要把刚才最左端踢出的字符串,在和index3字符相加
    # 然后添加进队列的最右端。
    deque.append(now_deque_str + index3)
    print("当前队列的值",deque)
    return list(deque)
    # 这是用的递归的方法。
    def letterCombinations1(self, digits: str) -> List[str]:
    # 同样需要先定义一个字典。用来表示数字对应的字母
    dic = {"2": "abc", "3": "def", "4": "ghi", "5": "jkl", "6": "mno", "7": "pqrs", "8": "tuv", "9": "wxyz"}
    # 定义变量用来接收最后的字符串。
    self.res = []
    if len(digits) == 0: return self.res
    self.dfs(dic,digits,"",0)
    return self.res
    def dfs(self,dic,digits,now_str,depth):
    # dic:自己定义的字典。digits:入参的字符串。
    # now_str:递归用来接收字符串的变量
    # depth:深度,
    if depth == len(digits):
    self.res.append(now_str)
    return
    # 这里只有一步就好了。
    for letter_str in dic[digits[depth]]:
    self.dfs(dic,digits,now_str + letter_str,depth + 1)


    A = Solution()
    print(A.letterCombinations1("2"))
  • 相关阅读:
    大屏展示功能
    单例模式/原型模式
    .net core ioc
    Log4net
    mvc 过滤器
    webservice
    页面传值 作用域
    Map使用方法
    java获取当前时间撮
    linux 下统计文本行数的各种方法(一)
  • 原文地址:https://www.cnblogs.com/cong12586/p/13567452.html
Copyright © 2011-2022 走看看