🎁 Offer多多申请季白金卡十一特惠52% off! 🎁 点击查看详情
查看: 1566|回复: 15
收起左侧

吴波店面

|只看干货
匿名用户-B56  2022-8-19 11:35:55 |阅读模式
本楼: 👍   0% (0)
 
 
0% (0)   👎

2022(7-9月) 码农类General 硕士 全职@Uber - 内推 - 技术电面  | 😐 Neutral 😐 AverageFail | 在职跳槽

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

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

x
就一道题 給一个input string 让evaluate成int value 如果input是数字直接转换 如果input是expression需要计算expression的值 expression格式是(符号,第一个operand,第二个operand) 会有嵌套括号的情况 operator只有加和减


input: string
output: int value

99 => 99
-4 => -4
(+, 12, -7) => 5
(-, 4, 2) => 2
(+, (-, 8, (+, -3, 3
您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
使用VIP即刻解锁阅读权限或查看其他获取积分的方式
游客,您好!
本帖隐藏的内容需要积分高于 188 才可浏览
您当前积分为 0。
VIP即刻解锁阅读权限查看其他获取积分的方式
右扫碰到左右括号就evaluate括号内的expr并更新input 直到全部扫完 这个解法需要边扫边更新input 感觉不是很好 应该有更好的方法

评分

参与人数 3大米 +8 收起 理由
清道神君 + 6
李小阳 + 1 赞一个!
whicter + 1 很有用的信息!

查看全部评分


上一篇:请问Roblox 70min OA需要开摄像头吗
下一篇:求问 new grad Ph.D. 有没有对应的岗位,找了半天没找到
本楼: 👍   100% (1)
 
 
0% (0)   👎
全局: 👍   97% (938)
 
 
2% (22)    👎
本帖最后由 yf233 于 2022-9-18 13:36 编辑
silenceleaf 发表于 2022-9-18 09:37
这个想法不错, 那怎么检查valid的input呢

两重valid,第一重是碰到符号的时候判断栈里是否有两个数字,以及最后栈里是否有且只有一个数字,第二重类似于validate valid brackets,检查括号是否匹配
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (76)
 
 
0% (0)    👎
  1. import java.util.*;

  2. public class HelloWorld{

  3.     private static int calculator(String s) {
  4.         Stack<String> stack = new Stack<>();
  5.         StringBuilder curString = new StringBuilder();
  6.         int finalResult = 0;
  7.         
  8.         for(char c: s.toCharArray()) {
  9.             
  10.             if(c != '(' && c != ' ') {
  11.                 if(c == ')') {
  12.                     if(curString.length() != 0) {
  13.                         stack.push(curString.toString());
  14.                         curString = new StringBuilder();
  15.                     }
  16.                     int secondVal = Integer.valueOf(stack.pop());
  17.                     int firstVal = Integer.valueOf(stack.pop());
  18.                     String operand = stack.pop();
  19.                     finalResult = eval(firstVal, secondVal, operand);
  20.                     stack.push(String.valueOf(finalResult));
  21.                     continue;
  22.                 }
  23.                
  24.                 if(c == ',') {
  25.                     if(curString.length() != 0) {
  26.                         stack.push(curString.toString());
  27.                         curString = new StringBuilder();
  28.                     }
  29.                     continue;
  30.                 }
  31.                
  32.                 curString.append(c);
  33.                
  34.             }
  35.         }
  36.         
  37.         return finalResult;
  38.     }
  39.    
  40.     private static int eval(int firstVal, int secondVal, String operand) {
  41.         if(operand.equals("+")) {
  42.             return firstVal+secondVal;
  43.         }
  44.         
  45.         return firstVal-secondVal;
  46.     }

  47.      public static void main(String []args){
  48.         System.out.println(calculator("(+ ,(-, 8, (+, -3, 3)), 1)"));
  49.      }
  50. }
复制代码
扫码关注一亩三分地求职与职场公众号
更多干货内容等你发现
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   95% (39)
 
 
4% (2)    👎
本帖最后由 dsxz 于 2022-8-24 00:15 编辑

感觉这个比224好做
我的想法是用两个栈,碰到运算符 加号或者减号压进运算符栈,碰到数字压数字栈,碰到右括号就数字栈弹出两个,运算符弹出一个
运算之后再压回数字栈
最后弹出的就是结果
如果中间栈空了,或者最后栈不空,就是不valid,还可以加上括号对的验证

没看到完整的题,不知道理解得对不对
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (3)
 
 
0% (0)    👎
蠡口 耳耳斯?
回复

使用道具 举报

地里匿名用户
匿名用户-A97  2022-8-23 16:39:04
本楼: 👍   0% (0)
 
 
0% (0)   👎
楼主有回信吗,我是上周四面的,今天收到了immigration assessment form但是并没有说电面过了没过啊。。。
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   92% (12)
 
 
7% (1)    👎
已加米 请问楼主是intern吗
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (3)
 
 
0% (0)    👎

感觉有点像 但是我没整出来。。
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (3)
 
 
0% (0)    👎
李小阳 发表于 2022-8-23 12:08
已加米 请问楼主是intern吗

不是 面的是全职的Backend Software Engineer
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   100% (3)
 
 
0% (0)    👎
dsxz 发表于 2022-8-23 21:07
感觉这个比224好做
我的想法是用两个栈,碰到运算符 加号或者减号压进运算符栈,碰到数字压数字栈,碰到右 ...

感觉一个栈就行。每次看见右括号都能出栈计算=》结果放回栈
回复

使用道具 举报

本楼: 👍   0% (0)
 
 
0% (0)   👎
全局: 👍   95% (39)
 
 
4% (2)    👎
dfdfcai4 发表于 2022-8-24 01:44
感觉一个栈就行。每次看见右括号都能出栈计算=》结果放回栈

也行,代码能更少一点吧
回复

使用道具 举报

地里匿名用户
匿名用户-3EF  2022-8-27 00:37:17
本楼: 👍   0% (0)
 
 
0% (0)   👎
input 是个string怎么把数字和括号完美的分开啊,如果用split by(,) 就会出现比如 (+ 或者像   -34)))这样的string
回复

使用道具 举报

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

本版积分规则

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