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

第一道题

# -*- 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', '')
原文地址:https://www.cnblogs.com/webRobot/p/7267763.html