双11狂欢大促

盲盒赢 定制羽绒服

开启惊喜盲盒,抽取你的专属好礼

— 惊喜奖品抢先看 —

华为机试LISP加减乘除语句解析

ss98791616 ss98791616 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
第一题
简单的 LISP 加减乘除语句解析并计算结果,四种运算符号为 add、sub、mul、div,分别为加减乘除。其中数字部分皆为整数。除法取整,除数为零输出 error。
例子:
(add 3 5 7) 结果为 15

(sub 1 9) 结果为 -8

(mul 0 9) 结果为 0

(div 8 3) 结果为 2

(div 8 0) 结果为 error

(add (sub (div 8 2) (mul 1 9)) 20) 结果为 15



public static void main(String[] args) throws IOException {
String s="(add (sub (div 8 2) (mul 1 9)) 20)";
// for (String s1 : s.split("\\(")) {
// System.out.println(s1);
// }
System.out.println(operation(s));


}
public static String operation(String str){
if (str.indexOf("(",1)==-1){
String[] split = str.split("\\s+");
String ope = split[0].replace("(","");
int c1 = Integer.parseInt(split[1].replace(")",""));
int c2 = Integer.parseInt(split[2].replace(")",""));
int result=-1;
if ("div".equals(ope)&&c2==0){
return "error";
}
switch (ope){
case "div":
result=c1/c2;
break;
case "add":
result=c1+c2;
break;
case "mul":
result=c1*c2;
break;
case "sub":
result=c1-c2;
break;
}
return String.valueOf(result);
}
int left=str.lastIndexOf("("),right=str.indexOf(")",left);
String substring = str.substring(left, right+1);
String result = " "+operation(substring);
StringBuilder sb = new StringBuilder(str);
sb.replace(left,right+1,result.replace(")",""));
return operation(sb.toString());
}
...全文

相关推荐

华为2015 2014机试 笔试 试题及上机注意事项

华为2015 2014机试 笔试 试题及上机注意事项,而且其中还有部分试题答案,特别全啊

阿光365

【华为OD机试B卷,GO题解独家】仿 LISP 运算

其中第一个元素 OP 为操作符,后续元素均为其参数,参数个数取决于操作符类型。不考虑 32 位溢出翻转,计算过程中也不会发生 32 位溢出翻转 除零错误时,输出 “error”,除法遇除不尽,向下取整,即 3 / 2 = 1。) 当前 OP 类型为 add / sub / mul / div(全小写),分别代表整数的加减乘除法。参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。简单起见,所有 OP 参数个数均为 2。

梦想橡皮擦

【华为机试真题 Python实现】仿 LISP 运算【2022 Q1 Q2 |200分】

《华为机试真题》专栏含牛客网华为专栏、华为面经试题、华为OD机试真题。如果您在准备华为的面试,期间有想了解的可以私信我,我会尽可能帮您解答,也可以给您一些建议!欢迎加微信:Ayemmar 加微信请备注 你的CSDN ID本文解法非最优解(即非性能最优)。LISP 语言唯一的语法就是括号要配对。 形如 (OP P1 P2 …),括号内元素由单个空格分割。其中第一个元素 OP 为操作符,后续元素均为其参数,参数个数取决于操作符类型注意:参数 P1, P2 也有可能是另外一个嵌套的 (OP P1 P2 …) 当前

不太灵光的程序员

【华为OD统一考试(B卷)】仿 LISP 运算,JAVA 题解 | 华为OD机试考题

其中第一个元素 OP 为操作符,后续元素均为其参数,参数个数取决于操作符类型。不考虑 32 位溢出翻转,计算过程中也不会发生 32 位溢出翻转 除零错误时,输出 “error”,除法遇除不尽,向下取整,即 3 / 2 = 1。) 当前 OP 类型为 add / sub / mul / div(全小写),分别代表整数的加减乘除法。参加华为 od 机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。参加华为 od 机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。

梦想橡皮擦

【华为OD机试真题 Python语言】221、仿LISP运算 | 机试真题+思路参考+代码分析

,当前OP类型为add/sub/mul/div (全小写), 分别代表整数的加减乘除法,简单起见,所有OP参数个数均为2。),括号内元素由单个空格分割,其中第一个元素OP为操作符,后续元素均为其参数,参数个数取决于操作符类型。题目涉及数字均为整数,可能为负;不考虑32位溢出翻转,计算过程中也不会发生32位溢出翻转,除零错误时,输出"error",除法遇除不尽,向下取整,即3/2= 1。● 输入: (sub (mul2 4) (div9 3))输出: 5。● 输入: (div 1 0)输出: error。

KJ.JK
评论
收藏 已收藏
分享
返回顶部
ss98791616
Java EE 67,535 成员 225,843 内容