返回轨道
算法 · 2026-05-14 · 19 阅读

P177 简易计算器

算法 19 阅读

信号摘要

难度:Medium · 时长:08:20 · leetcode 227 · lintcode 980

P177 简易计算器

未对外公开播放权限
点击查看说明

描述

这个题目说的是,给你一个字符串表达式,你要实现一个简易计算器,对它进行求值。

表达式中只包含非负整数, +、-、*、/ 运算符以及空格。表达式中的除法使用整数除法,即两数相除只取整数部分。

注意,给出的表达式总是有效的,并且不允许使用内置的字符串求值函数。

比如说,给你的表达式为:

"1+3 + 2*6 / 3 - 2"

这个表达式求值结果等于 6,因此你要返回 6。

代码

public class AlgoCasts {

  // Time: O(n), Space: O(1)
  public int calculate(String s) {
    int p = 0, n = s.length();
    int sum = 0, part = 0;
    char op = '+';

    while (p < n) {
      while (s.charAt(p) == ' ') ++p;
      int num = 0;
      while (p < n && s.charAt(p) >= '0' && s.charAt(p) <= '9') {
        num = num * 10 + s.charAt(p) - '0';
        ++p;
      }

      if (op == '+') {
        sum += part;
        part = num;
      } else if (op == '-') {
        sum += part;
        part = -num;
      } else if (op == '*') {
        part *= num;
      } else {
        part /= num;
      }
      while (p < n && s.charAt(p) == ' ') ++p;
      if (p < n) op = s.charAt(p++);
    }
    return sum + part;
  }

}

📡 通讯频道