当前位置: 首页 > news >正文

227. 基本计算器 II

一、题目

给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。

整数除法仅保留整数部分。

你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。

注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。

示例 1:

输入:s = “3+2*2”
输出:7
示例 2:

输入:s = " 3/2 "
输出:1
示例 3:

输入:s = " 3+5 / 2 "
输出:5

二、思路

  • 直接模拟,先剔除空格
  • 两次循环,模拟先乘除 后加减 简单粗暴

三、代码

import java.util.LinkedList;
import java.util.List;class Solution {public int calculate(String s) {s = s.replaceAll(" ", "");//剔除空格List<String> sList = new ArrayList<>();StringBuilder sb = new StringBuilder();//避免频繁拼接字符串int length = s.length();for (int i = 0; i < length; i++) {char c = s.charAt(i);if (Character.isDigit(c)) {sb.append(c);} else {if (sb.length() > 0) {sList.add(sb.toString());sb.setLength(0);}sList.add(String.valueOf(c));}}if (sb.length() > 0) {sList.add(sb.toString());//最后那个数字}// 处理乘除for (int i = 0; i < sList.size();) {String code = sList.get(i);if (code.equals("*") || code.equals("/")) {// 获取前一个和后一个数字int num1 = Integer.parseInt(sList.get(i - 1));int num2 = Integer.parseInt(sList.get(i + 1));int result;if (code.equals("*")) {result = num1 * num2;} else {result = num1 / num2;}// 替换当前元素为结果,移除前两个元素sList.set(i - 1, String.valueOf(result));sList.remove(i);sList.remove(i);// 回退索引以处理可能的连续运算符i -= 1;} else {i++;}}// 计算加减int sum = Integer.parseInt(sList.get(0));int flag = 1; // 1加2减for (int i = 1; i < sList.size(); i++) {String code = sList.get(i);if (code.equals("+")) {flag = 1;} else if (code.equals("-")) {flag = 2;} else {int num = Integer.parseInt(code);sum = flag == 1 ? sum + num : sum - num;}}return sum;}
}

相关文章:

  • Java 原生实现代码沙箱(OJ判题系统第1期)——设计思路、实现步骤、代码实现
  • 线段树:数据结构中的超级英雄
  • 检查当前 Docker 使用的 默认运行时(default runtime)方法
  • LeetCode-双指针-盛最多水的容器
  • 部署Superset BI(四)连接sql server数据库
  • MSF 生成不同的木马 msfvenom 框架命令
  • uniapp跨平台开发HarmonyOS NEXT应用初体验
  • 纯净IP,跨境账号稳定的底层逻辑
  • git做commit信息时的校验
  • hz2新建Keyword页面
  • Spring 必会之微服务篇(1)
  • python实现点餐系统
  • gitlab相关面试题及答案
  • 学习笔记:黑马程序员JavaWeb开发教程(2025.3.31)
  • 用Python监控金价并实现自动提醒!附完整源码
  • 软件测试——用例篇(2)
  • OpenHarmony 以太网卡热插拔事件接口无效
  • 【RLHF】 Reward Model 和 Critic Model 在 RLHF 中的作用
  • 云原生架构下的微服务通信机制演进与实践
  • 31【干货】Arcgis属性表常用查询表达式实战大全
  • 2025中国品牌日上海践行活动启动,将建设品牌生态交互平台
  • 全球第七个迪士尼主题公园将落户阿布扎比
  • 宁波市人大常委会审议生育工作报告,委员建议学前教育免费
  • 外交部回应西班牙未来外交战略:愿与之一道继续深化开放合作
  • 重庆动物园大熊猫被游客扔玻璃瓶,相同地方曾被扔可乐瓶
  • 潘功胜:降准0.5个百分点,降低政策利率0.1个百分点