1. 程式人生 > >微軟公司筆試題_附上源碼解決

微軟公司筆試題_附上源碼解決

a* als ted 技術 original name != alt 邏輯

技術分享

技術分享

第一道題

# -*- 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‘, ‘‘)

微軟公司筆試題_附上源碼解決