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

题目:

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

 

 

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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值