一亩三分地

 找回密码 注册账号

扫描二维码登录本站

微信公众号
扫码关注公众号
留学申请号
扫码关注留学申请公众号
查看: 1521|回复: 5
收起左侧

狗家电面新鲜挂经

[复制链接] |只看干货 |码农类general, 面试经验, 美国面经, google
我的人缘0

升级   0.38%


分享帖子到朋友圈
本楼: 👍   50% (1)
 
 
50% (1)   👎
全局: 👍   96% (123)
 
 
3% (4)    👎

2020(7-9月) 码农类General 硕士 全职@Google - 内推 - 技术电面  | Fail/Rej | 在职跳槽

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?注册账号

x
本帖最后由 luohangji 于 2020-7-22 05:11 编辑

国人大哥

游客,本帖隐藏的内容需要积分高于 120 才可浏览,您当前积分为 0。
查看如何攒积分 Click here for more info.


虽然以前写过一次,但这次做起来还是磕磕碰碰写完最后有点bug被叫停问问题,八成是挂了,不知道能不能要求加面一轮

评分

参与人数 5大米 +7 收起 理由
frk + 1 很有用的信息!
清道神君 + 2
ninjax + 1 很有用的信息!
Houdini + 1 很有用的信息!
陌生用户 + 2 很有用的信息!

查看全部评分


上一篇:开花堡 VO
下一篇:G家实习店面
我的人缘0

升级   83.5%

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (60)
 
 
0% (0)    👎
本帖最后由 ninjax 于 2020-7-25 12:05 编辑

不知道出结果没? stack只能存sign...完全没思路

磨出来一个
[Python] 纯文本查看 复制代码
class Solution:
    def calculate(self, s: str) -> int:
        return self._calc(s, 0)
    
    
    def _calc(self, s, start):
        i = start
        ans = 0
        sign = 1
        num = 0
        while i < len(s):
            if s[i] == "(":
                end, val = self._calc(s, i+1)
                ans += sign*val
                i = end+1
            elif s[i] == ")":
                return i, ans
            elif s[i] == "+":
                sign = 1
                i += 1
            elif s[i] == "-":
                sign = -1
                i += 1
            elif s[i].isdigit():
                while i < len(s) and s[i].isdigit():
                    num = num*10 + int(s[i])
                    i += 1
                ans += num*sign
                num = 0
            else:
                i += 1
        return ans + sign*num
            

回复

使用道具 举报

我的人缘0

升级   86.43%

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   97% (107)
 
 
2% (3)    👎
因为只有+ -,所以只需要stack记录sign,然后根据情况判断是否取反,或者负负得正的情况
回复

使用道具 举报

我的人缘0

升级   61.57%

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (21)
 
 
0% (0)    👎
Stack里面只能存sign, 那之前计算的临时结果要求放在一个变量里面? 比如计算:
1 + ( 2 - ( 3 +4) -5)
遇到2前面那个左括号,正常思路 是tmpRes = 1 push, sign '+' push。 现在stack里面不能push 1进去,那么1保存在变量比如叫tmp。
那么继续遇到3前面的左括号,这时候又要压栈, 又有tmpRes = 2, 还要把这个2和之前tmp=1 先和起来?


评分

参与人数 1大米 +1 收起 理由
tensorboy + 1 赞一个

查看全部评分

回复

使用道具 举报

我的人缘0

升级   79%

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   95% (20)
 
 
4% (1)    👎
第二题 太坑了吧
回复

使用道具 举报

地里的匿名用户
地里的匿名用户  发表于 2020-10-27 05:02:56
本楼: 👍   0% (0)
 
 
0% (0)   👎
可以不用stack啊。 int i=0;
    public int calculate(String s) {
        if(s==null||s.isEmpty())return 0;
        int sign=1;        
        int n=s.length();
        int num=0;
        int left=0;
        while(i<n){
            char c=s.charAt(i++);
            if(c=='+'||c=='-'){
                left+=num*sign;
                sign=c=='+'?1:-1;
                num=0;
            }else if(c==' ')continue;
            else if(Character.isDigit(c)){
                num=num*10+c-'0';
            }else if(c=='('){
                num=calculate(s);
            }else if(c==')'){

                return left+num*sign;
            }

        }
        return left+num*sign;
    }
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号

本版积分规则

隐私提醒:
■拉群请前往同学同事飞友|拉群结伴版块,其他版块拉群,帖子会被自动删除
■论坛不能删帖,为防止被骚扰甚至人肉,不要公开留微信等联系方式,请以论坛私信方式发送。
■特定版块可以超级匿名:https://tools.1point3acres.com/thread
■其他版块匿名方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|||一亩三分地

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

Some icons made by Freepik from flaticon.com

快速回复 返回顶部 返回列表