Pythonm面試題及解析2 - 重排

pythontab發表於2016-11-22

晚上在公司的論壇上看到一道面試題,題目如下:隨機給定一字串和字元,要求重排,比如:’abde’,’c’。重排之後變成’abcde’

看到他們給的答案很多都是二分法重排,既然是字元類的處理,當然可以用ASCII碼錶對應的數字來處理了,所以在這裡簡單的寫一種方法出來,程式碼如下:

def st(s1,s2):
    #先排序
    l = sorted(s1)
    #然後遍歷
    for i in l:
        if i == s2:
            ind = l.index(i)
            l.insert(ind, s2)
            return l
        elif i < s2 and l[l.index(i) + 1] > s2:
            l.insert(l.index(i) + 1, s2)
            return l
        elif i > s2 and l[l.index(i) - 1] < s2:
            l.insert(l.index(i) - 1, s2)
            return l
        elif l[-1] < s2:
            l.insert(len(l), s2)
            return l
        elif l[0] > s2:
            l.insert(0, s2)
            return l


測試步驟:

s1='ahijklvwx'
s2='d'
print st(s1,s2)


測試結果:不知道有沒bug(數字、大寫字母、特殊字元都試過),最後再轉換成字串,程式碼中沒有寫出來

['a', 'd', 'h', 'i', 'j', 'k', 'l', 'v', 'w', 'x']


相關文章