华为OD机试 2024E卷题库疯狂收录中,刷题 <a rel="nofollow" href="https://blog.csdn.net/qq_40374604/category_12822407.html" style="color: red;">点这里</a>。
实战项目访问:http://javapub.net.cn/
专栏导读
本专栏收录于 《华为OD机试(JAVA)真题(E卷+D卷+A卷+B卷+C卷)》 。
刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。
表达式求值
给定一个字符串描述的算术表达式,计算出结果值。 输入字符串长度不超过 100 ,合法的字符包括 ”+, -, *, , (, )” ,”0-9” 。
数据范围:运算过程中和最终结果均满足 ∣val∣≤2^31−1
,即只进行整型运算,确保输入的表达式合法
输入描述:
输入算术表达式
输出描述:
计算出结果值
示例1
输入
400+5
输出
405
Java 编程
package cn.net.javapub.javaintroduction.example;
/**
* @author: shiyuwang
* @url: http://javapub.net.cn
*/
import java.io.IOException;
import java.io.InputStream;
public class Main {
public static void main(String[] args) throws IOException {
InputStream in = System.in;
System.out.println(new ExprDemo().expr(in));
}
public static class ExprDemo {
public char lastsign1 = 0, lastsign2 = 0;
public int temp1 = 0, temp2 = 0;
private static final char TEMPCHAR = 0;
public int expr(InputStream in) throws IOException {
int result = 0;
char c;
//循环遍历读取计算式中的所有字符
a:
while ((c = (char) in.read()) != '\n') {
switch (c) {
case ')':
case ']':
//当遇到}时中断switch
case '}':
break a;
case '(':
case '[':
//当遇到{是
case '{':
temp2 = new ExprDemo().expr(in);
break;
case '+':
case '-':
jisuan1(TEMPCHAR);
result = jisuan2(c, result);
break;
case '*':
case '/':
jisuan1(c);
break;
default:
temp2 = temp2 * 10 + c - '0';
break;
}
}
jisuan1(TEMPCHAR);
result = jisuan2(TEMPCHAR, result);
return result;
}
private void jisuan1(char c) {
switch (lastsign2) {
case 0:
temp1 = temp2;
break;
case '*':
temp1 *= temp2;
break;
case '/':
temp1 /= temp2;
break;
default:
break;
}
temp2 = 0;
lastsign2 = c;
}
private int jisuan2(char c, int result) {
switch (lastsign1) {
case 0:
result = temp1;
break;
case '-':
result -= temp1;
break;
case '+':
result += temp1;
break;
default:
break;
}
temp1 = 0;
lastsign1 = c;
return result;
}
}
}
展示效果:
🏆下一篇: 华为OD机试 - 杨辉三角的变形 (Java 2024 E卷 100分) 🏆本文收录于, 搬砖工逆袭Java架构师
刷的越多,抽中的概率越大,私信javapub,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新,全天CSDN在线答疑。