字節頭條的一道代碼題,面試題

題目:

有一個鍵盤,只有a-z的26個英文字母的輸入按鍵,現在鍵盤有兩個按鍵壞了,

按i鍵,會退格,等同於常規鍵盤的backspace鍵,

按o鍵,會撤回上一步,效果等同於win系統的ctrl+z,

要求實現一個方法,模擬鍵盤的輸出邏輯

思路:

先定義一個list類型的stack,對輸入的字符串進行處理,

處理完成後,stack中只有常規字母,和“i”(就是刪除)

然後再對上一步的list進行循環,處理,

   def getBoard(strs):
        stack = []
        result=[]
        for s in strs:
            if s=="i" :
                stack.append("back")
            elif s=="o" and len(stack)>0:
                stack.pop()
            else:
                stack.append(s)
        for action in stack:
            if action=="back" and len(result)>0:
                result.pop()
            else:
                result.append(action)
        return "".join(result)

if __name__=="__main__":
    print(getBoard("zijietiaodong"))

 

 

有什麼更好的辦法大家可以提出來呀~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章