微软公司笔试题_附上源码解决

 

 

 

 

 

第一道题

# -*- coding: utf-8 -*-
'''
f(a*b, acb) => true 
f(abc*, abbc) => false 
f(**bc, bc) => true
'''

import re
string='abbc'
Regex = re.compile(r'(abc)*')


def f(Regex,string):
    
    mo = Regex.search(string)
    if mo.group()!='':
        return True
    else:
        return False


if __name__ == '__main__':   
    print(f(Regex,string))    

 

 

 

 

 

第二道题

# -*- coding: utf-8 -*-
"""
Created on Tue Aug  1 09:04:28 2017

@author: toby
字典  1--a
chr 97--a
[0:2] 表示前面两位
[2:] 表示第三位到最后一位
考逻辑递归
"""

def output(original, pre):
    #递归的基本情况,当原始字符串长度为0或1的时候
    #当字符串长度为0,返回空
    if len(original) == 0:
        print (pre) 
        return
    if len(original) == 1:
        #输出字符串由前面字母+后面字母,后面字母运用递归原理
        print (pre + chr(96 + int(original)))
        return
        
    #运用递归
    #如果前面两位数小于27
    if int(original[0:2]) < 27:
        #新字符串 k, chr(96+11)
        new_chr = chr(96 + int(original[0:2]))
        #print('new_chr:',new_chr)
        #[2:] 表示第三位到最后一位,开始递归
        output(original[2:], pre + new_chr)
     
    #如果前面两位数大于或等于27    
    #新字符串,[0:1]表示第一位数字    
    new_chr = chr(96 + int(original[0:1]))
    #[1:]第一位到最后一位,开始递归
    output(original[1:], pre + new_chr)

if __name__ == '__main__':
    output('1123', '')
    #output('112345345345435', '')

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值