标签:ch int res Calculator 0224 sign operand stack Leetcode
题目描述:
Given a string s representing an expression, implement a basic calculator to evaluate it.
Example 1:
Input: s = “1 + 1”
Output: 2
Example 2:
Input: s = " 2-1 + 2 "
Output: 3
Example 3:
Input: s = " 2-1 + 2 "
Output: 3
Constraints:
1 <= s.length <= 3 * 105
s consists of digits, ‘+’, ‘-’, ‘(’, ‘)’, and ’ '.
s represents a valid expression.
Time complexity: O(n)
class Solution {
public int calculate(String s) {
Stack<Integer> stack = new Stack<>();
int res = 0;
int operand = 0;
int sign = 1; // 1 means positive, -1 means negative
for(int i = 0; i < s.length(); i++){
char ch = s.charAt(i);
if (Character.isDigit(ch)) {
operand = operand*10+(int) (ch - '0');
}else if(ch == '+'){
res += sign*operand;
operand = 0;
sign = 1;
}else if(ch == '-'){
res += sign*operand;
operand = 0;
sign = -1;
}else if (ch == '(') {
stack.push(res);
stack.push(sign);
sign = 1;
res = 0;
}else if (ch == ')') {
res += sign*operand;
res *= stack.pop();
res += stack.pop();
operand = 0;
}
}
return res+(sign*operand);
}
}
标签:ch,int,res,Calculator,0224,sign,operand,stack,Leetcode 来源: https://blog.csdn.net/weixin_43946031/article/details/113847320
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。