吾八哥本人之前有幸能接到百度北京總部的人工智能測試開發崗位的面試機會,在二面的過程中,面試官出了一道算法題,題目是:有一組“+”和“-”符號,要求將“+”排到左邊,“-”排到右邊,寫出具體的實現方法。
很明顯這是一道排序算法題,基本上隨便哪種算法都能實現,但這顯然不是面試官要的答案,但是何種算法最合適呢?當時緊張的氣氛下,開始是想到從頭循環到尾部,遇到“-”就移動到尾部,將尾部的數據跟首位的數據交換。不過面試官提醒了下說如果起始和結束都是“-”呢?一想吧,確實是的,那就死循環了,后來再仔細想了下,這個得頭部和尾部一起移位才行,一直到整組字符串檢查完成即可。雖然勉強算是完成了該算法,但在終面的時候還是沒過,唉!都是淚啊,不過這也抵擋不了我繼續學習的決心呀!不過當時面試的這會吾八哥我還沒怎么接觸Python,現在既然開始玩Python了,就拿Python來實現下這個排序算法,代碼如下:
#解百度面試題 def StringSort(data): startindex = 0 endindex = 0 count = len(data) while startindex + endindex < count: if data[startindex] == '-': data[startindex], data[count - endindex - 1] = data[count - endindex - 1], data[startindex] endindex += 1 else: startindex += 1 return data data = ['-', '-', '+', '+', '+','-', '+','-', '+','-','-'] print(StringSort(data))
執行結果:[‘+’, ‘+’, ‘+’, ‘+’, ‘+’, ‘-‘, ‘-‘, ‘-‘, ‘-‘, ‘-‘, ‘-‘]
吾八哥Python交流群643829693歡迎各路熱愛Python的朋友加入!
