字节头条的一道代码题,面试题

题目:

有一个键盘,只有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"))

 

 

有什么更好的办法大家可以提出来呀~

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