回复: 14
跳转到指定楼层
上一主题 下一主题
收起左侧

还热乎的google电面

全局:

2019(1-3月) 码农类General 硕士 全职@google - 内推 - 技术电面  | | Other | 应届毕业生

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

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

x
朋友内推,刷题还没准备太多。

您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 200 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
Unlock interview details and practice with AI
Curated Interview Questions from Top Companies

评分

参与人数 8大米 +15 收起 理由
vivivic + 2 给你点个赞!
erichuan2020 + 3 很有用的信息!
XiangZhengTQQF + 1 给你点个赞!
rongxiantian + 3 给你点个赞!
pengdu + 1 赞一个

查看全部评分


上一篇:Recruiter回复奇慢。。。 大家都是这样么。。
下一篇:eBay乾厚端店面跪经

本帖被以下淘专辑推荐:

推荐
dengzeyu147 2019-7-26 06:29:56 | 只看该作者
全局:
写了一下 假设没有负数的话 大概这样 请指点
  1. public static void main(String[] args) {
  2.         System.out.println(Sexpression("(* (* 6(+ 5 8 6))(+ 9 ( * 2 2 )))"));
  3.         //(* (* 6(+ 5 8 6))(+ 9 ( * 2 2 )))
  4.     }
  5.     public static int Sexpression(String s){
  6.      Queue<Character> queue = new LinkedList<>();
  7.         for(char c : s.toCharArray()){
  8.             //if(c != ' '){
  9.                 queue.offer(c);
  10.             //}
  11.         }
  12.         //queue.offer('+');
  13.         return helper(queue);
  14.     }
  15.     public static int helper(Queue<Character> q){
  16.         int res = 0;
  17.         int num = 0;
  18.         Stack<Integer> stack = new Stack<>();
  19.         Stack<Character> sstack = new Stack<>();
  20.         //sstack.push('+');
  21.         while(!q.isEmpty()){
  22.             char c = q.poll();
  23.             if(Character.isDigit(c)){
  24.                 num = num * 10 + (c-'0');
  25.                 System.out.println(num);
  26.                 while(!q.isEmpty() && Character.isDigit(q.peek())){
  27.                     char tmp = q.poll();
  28.                     System.out.println(tmp);
  29.                     num = num * 10 + (tmp-'0');
  30.                 }
  31.                 stack.push(num);
  32.                 num = 0;
  33.             }else if(c == '(') {
  34.                 stack.push(helper(q));
  35.             }else if(c == ' '){
  36.                
  37.                 continue;
  38.             }else{
  39.                 if(c == '+' || c == '-' || c == '*' || c =='/'){
  40.                     //System.out.println(c);
  41.                     sstack.push(c);
  42.                 }
  43.                 num=0;
  44.                 if(c == ')'){
  45.                     break;
  46.                 }
  47.             }
  48.         }
  49.         if(sstack.isEmpty())return res;
  50.         char sign = sstack.pop();
  51.         System.out.println(sign);
  52.         if(stack.isEmpty())return res;
  53.         if(sign == '*')res = 1;
  54.         for(int s : stack){
  55.             if(sign == '+'){
  56.                 res += s;
  57.             }else if(sign == '-'){
  58.                 res -= s;
  59.             }else if(sign == '*'){
  60.                 res *= s;
  61.             }else if(sign == '/'){
  62.                 res /= s;
  63.             }         
  64.         }
  65.         System.out.println(res);
  66.         return res;
  67.     }  
复制代码
回复

使用道具 举报

推荐
 楼主| jbzhang 2019-2-28 09:37:16 | 只看该作者
全局:
iq136man 发表于 2019-2-28 08:03
楼主能讲讲你的思路吗? 碰到这种题我脑子就有坑。。。
已加米。

就是一个个加进一个stack,碰到一个“)”,就pop,直到有“(”pop出来,利用pop的operator求解,加入stack
然后继续,直到最后一个(被pop,得到最终解
回复

使用道具 举报

全局:
pandami 发表于 2019-2-28 05:38
哦 一个符号可以负责后面所有的数字啊
和波兰表达式还不太一样
+ + 5 8 6

这个应该是S-expression,不是polish expression
回复

使用道具 举报

全局:
+ 5 8 6变成 13 6之后怎么办?是不是少了一个符号?
回复

使用道具 举报

🔗
 楼主| jbzhang 2019-2-28 05:33:58 | 只看该作者
全局:
pandami 发表于 2019-2-28 05:18
+ 5 8 6变成 13 6之后怎么办?是不是少了一个符号?

+ 5 8 6 的结果应该是19. 计算括号里面的
回复

使用道具 举报

全局:
jbzhang 发表于 2019/02/28 05:33:58


+ 5 8 6 的结果应该是19. 计算括号里面的

哦 一个符号可以负责后面所有的数字啊
和波兰表达式还不太一样
+ + 5 8 6
回复

使用道具 举报

🔗
mwen2 2019-2-28 06:33:20 | 只看该作者
全局:
我的天,和普通思维的数学表达式好容易搞混
回复

使用道具 举报

🔗
iq136man 2019-2-28 08:03:25 | 只看该作者
全局:
楼主能讲讲你的思路吗? 碰到这种题我脑子就有坑。。。
已加米。
回复

使用道具 举报

🔗
pengdu 2019-2-28 08:10:25 来自APP | 只看该作者
全局:
楼主,stack实现不好写可以考虑写递归版本啊,代码应该看起来更简单些。
回复

使用道具 举报

🔗
bdhmwzfa 2019-2-28 09:28:52 | 只看该作者
全局:
同楼上,这个问题用递归写更好写,因为一个operator对应不止两个数
回复

使用道具 举报

🔗
 楼主| jbzhang 2019-2-28 09:34:34 | 只看该作者
全局:
pengdu 发表于 2019-2-28 08:10
楼主,stack实现不好写可以考虑写递归版本啊,代码应该看起来更简单些。

递归版本我还真不会,求指教
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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