zoukankan      html  css  js  c++  java
  • 小米春招编程题(第3题)

    题目描述:

    1表示a、2表示b、3表示c …… 26表示z,要求输入一串数字,输出所有可能表示的字符串

    样例输入:

    1212

    样例输出:

    abab abl aub lab ll

    样例输入:

    1234

    样例输出:

    abcd awd lcd

    题目分析:

    如下图,利用DFS,遍历二叉树,剪枝条件:数字不能大于26

    # -*- coding:utf-8 -*-
    class Fun:
        def __init__(self):
            self.flag=0
            self.list=[]#声明一个list模仿栈
    
        def fun(self,string):
            self.fun_1(string)
            self.fun_2(string)
            #回溯,出栈
            if len(self.list):
                self.list.pop()
        #获取一个数字
        def fun_1(self,string):
            #遍历完成输出
            if len(string) == 0:
                print ''.join(self.list),
                return
            else:
                #输入的数要大于0
                if int(string[0])>0:
                    self.list.append(chr(int(string[0]) + 96))
                    return self.fun(string[1:])
                else:
                    return
        #获取两个数字
        def fun_2(self,string):
            #数字长度小于2,返回
            if len(string) <= 1:
                return
            else:
                if int(string[0:2]) > 26:
                    return
                else:
                    self.list.append(chr(int(string[0:2]) + 96))
                    return self.fun(string[2:])
    
    
    string=raw_input()
    f=Fun()
    f.fun(string)
  • 相关阅读:
    Python 函数与函数式编程
    Python 字符编码与转码
    Python 读写txt文件操作
    两阶段事务总结
    MPPDB集群高可用设计
    MPPDB中的各个组件
    IntelliJ IDEA2016学习小结
    mysql免安装版配置
    理想的智能机
    java对象的大小
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/8805745.html
Copyright © 2011-2022 走看看