赞
踩
整数除法仅保留整数部分。
示例 1:
输入:s = "3+2*2"
输出:7
示例 2:
输入:s = " 3/2 "
输出:1
示例 3:
输入:s = " 3+5 / 2 "
输出:5
class Solution { public: int calculate(string s) { int i = 0; return help(s, i); } int help(string &s, int &i){ int left = 0, right = 0; char op = '+'; while(i < s.size()){ if(s[i] != ' '){ long n = parse_num(s, i); switch(op){ case '+' : left += right; right = n; break; case '-' : left += right; right = -n; break; case '*' : right *= n; break; case '/' : right /= n; break; } if(i < s.size()){ op = s[i]; } } ++i; } return left + right; } long parse_num(string &s, int &i){ long n = 0; while(i < s.size() && isdigit(s[i])){ n = n * 10 + (s[i++] - '0'); } return n; } };
提示:
1 <= s.length <= 3 * 105
s 由整数和算符 (’+’, ‘-’, ‘*’, ‘/’) 组成,中间由一些空格隔开
s 表示一个 有效表达式
表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1] 内
题目数据保证答案是一个 32-bit 整数
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。