樓主月初去騰訊時面試官臨時給的一道編程題,先說明下,本猿的本職工做是測試拉,因此代碼有不合理歡迎你們批評和指導!python
先賣個關子吧,上下樓主當時本身臨場發揮的代碼(當時沒以爲,出來後都想給本身一巴掌):面試
##############################################編程
1 def split_test(stringstr,charstr): 2 templist = [] 3 for i in range(len(stringstr)): 4 if stringstr[i]==charstr: 5 print 'this is charstr!' 6 else: 7 templist.append(stringstr[i]) 8 return templist 9 10 if __name__=="__main__": 11 print split_test("abcdefgavavb",'a')
##################################
預期結果:
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/ChenDejieWorkSpace/.idea/Split_test.py
this is charstr!
this is charstr!
this is charstr!
['b', 'c', 'd', 'e', 'f', 'g', 'v', 'v', 'b']
樓豬當時確時沒想不少,之前用split()用得很是多,但歷來沒研究過,當時寫出來後還津津樂道,覺得本身多牛逼(好吧,我是二逼,你們勿噴)
##############################################################
今天下午遇到一些字符上的事,想起這道面試題,乾脆去研究了下,不說了上代碼:
1 #-*-coding:utf-8-*- 2 def split_new(stringstr, charstr): 3 """ 4 :param stringstr: 要分割的串 5 :param charstr: 按該串分割 6 :return: 返回分割後的list 7 """ 8 #stringstr = stringstr 9 tempstr = [] 10 lengstring = len(stringstr)#計算串的長度 11 lengchar = len(charstr)#計算分割符的長度 12 for i in range(lengstring): 13 index = stringstr.find(charstr)#找到第一個出現charstr的座標,若是沒有找到,find返回-1 14 if index == -1: 15 tempstr.append(stringstr) 16 return tempstr 17 else: 18 tempstr.append(stringstr[:index])#取第一次出現charstr(不包含charstr)的前面部分 19 stringstr = stringstr[index+lengchar:]#把第一次出現charstr(不包含charstr)的 後面部分 從新賦值給stringstr 20 21 if __name__=="__main__": 22 print split_new("ABCDEFGAA@@ABCDEFGA@@ABCDEFG", "A")
##################################
預期結果:
C:\Python27\python.exe C:/Users/Administrator/PycharmProjects/ChenDejieWorkSpace/split_New.py
['', 'BCDEFG', '', '@@', 'BCDEFG', '@@', 'BCDEFG']
優勢是分割符能夠使用字符或者串都行尾聲:代碼沒法拷回,臨時回憶貼圖,有問題先感謝你們指導並留言!