7.14字节后端People面试编程题分享

有点紧张,面试时思路不清晰,好多东西都忘了。
这里来分享一下面试的编程题(紧张了,思路不清晰,现场撸代码翻车了,刚刚重新做了一下来分享哈)

题目描述:输入一个字符串,其包含逻辑运算符和布尔变量(用t和f分别表示True和False),编写程序计算字符串运算结果
例如
输入"!(&(t,t,f,|(t,f)))",
输出应为 "t"。

代码解答如下:(用栈来做,最开始我思路是对的,面试官让我讲下思路,然后我做了一下遇到了困难,开始怀疑自己思路不对,因为面试官没给任何反馈,我以为我想错了,就想去改用其他方法来做,后来发现还是用栈做最方便)
if __name__ == "__main__":
    
    def oper(ll,op):
        d = {'t':0,'f':0}
        for i in ll:
            if i in d:  
                d[i] += 1
        if op == '&':
            if d['f']>0: return 'f'
            else: return 't'
        elif op == '|':
            if d['t']>0: return 't'
            else: return 'f'
        else:
            if d['t'] == 1:
                return 'f'
            else:
                return 't'

    def res(s):
        stack = []
        tmp = []
        for char in s:
            if char == ')':
                t = stack.pop()
                while t!='(':
                    tmp.append(t)
                    t = stack.pop()
                tmp.append(t)
                operator = stack.pop() 
                n = oper(tmp, operator)
                if not stack: return n
                stack.append(n)
            else:
                stack.append(char)

    # 测试用例
    s1 = "!(&(t,t,f,|(t,f)))"
    s2 = "&(t,t,|(f,f,f),t,&(t,t))"
    # 输出
    print(res(s1),res(s2))

全部评论
面试感觉是按照简历上的内容来问的,每个人简历不一样,感觉问的问题差别很大,所以就不分享那些问题了(毕竟我太菜了)
点赞 回复 分享
发布于 2020-07-14 20:31

相关推荐

10-25 12:05
已编辑
湖南科技大学 Java
若梦难了:我有你这简历,已经大厂乱杀了
点赞 评论 收藏
分享
拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
点赞 5 评论
分享
牛客网
牛客企业服务