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)
  • 相关阅读:
    vue-cli(脚手架)学习
    vue-cli(脚手架)
    js时间戳转时间格式
    jQ获取窗口尺寸
    前端加密MD5
    vue项目准备工作(一)
    Oracle数据错删找回
    正则表达式匹配【全角字符】
    数据库分区、分表、分库、分片
    oracle的 分表 详解 -----表分区
  • 原文地址:https://www.cnblogs.com/ybf-yyj/p/8805745.html
Copyright © 2011-2022 走看看