实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式可以包含左括号  来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/basic-calculator 类似题目:LeetCode 227. 基本计算器 II(栈) 12 ms 8.2 MB 92 ms 13.6 MB
1. 题目
( ,右括号 ),加号 + ,减号 -,非负整数和空格  。示例 1: 输入: "1 + 1" 输出: 2  示例 2: 输入: " 2-1 + 2 " 输出: 3  示例 3: 输入: "(1+(4+5+2)-3)+(6+8)" 输出: 23  说明: 你可以假设所给定的表达式都是有效的。 请不要使用内置的库函数 eval。 
 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。2. 解题
class Solution { //C++ public: int calculate(string s) {      stack<int> stk; int sign = 1; long num = 0, sum = 0; for(int i = 0; i < s.size(); ++i) { if(s[i] =='(') { //遇见左括号,把括号外面的结果入栈,外面的符号入栈                 stk.push(sum);        stk.push(sign);                 sign = 1;//下次的符号初始值                 sum = 0;                 num = 0; } else if(s[i] =='+') {        sum += sign*num;//和        sign = 1;//当前符号        num = 0; } else if(s[i] =='-') {        sum += sign*num;        sign = -1;        num = 0; } else if(s[i] ==')') { //遇到右括号        sum += sign*num;//括号内的和加起来        sign = stk.top();//括号外的符号        stk.pop();//符号出栈                 sum = sign*sum + stk.top();//和*符号+外面的和                 stk.pop();//外面的和出栈        num = 0; } else if(isdigit(s[i]))        num = num*10+s[i]-'0'; } return sum+sign*num; } }; class Solution:# py3 def calculate(self, s: str) -> int: sum, sign, num = 0, 1, 0         stk = [] for c in s: if c ==' ': continue if c =='+': sum += sign*num                 sign = 1                 num = 0 elif c =='-': sum += sign*num                 sign = -1                 num = 0 elif c =='(':                 stk.append(sum)                 stk.append(sign) sum, num = 0, 0                 sign = 1 elif c ==')': sum += sign*num                 sum = sum*stk.pop()+stk.pop()                 num = 0 else:                 num = num*10+int(c) return sum+sign*num 
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算
官方软件产品操作指南 (170)