import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
* 返回表达式的值
* @param s string字符串 待计算的表达式
* @return int整型
*/
public int solve (String s) {
// write code here
Map<String,Integer> res= func(s,0);
return res.get("num");
}
public Map<String,Integer> func(String s,int index){
Stack<Integer> st = new Stack<Integer>();
int num = 0;
char op = '+';
int i;
for(i = index;i< s.length();i++){
if(s.charAt(i) >= '0' && s.charAt(i) <= '9'){
num = num * 10+ s.charAt(i) - '0';
if(i != s.length() - 1){
continue;
}
}
if(s.charAt(i) == '('){
Map<String,Integer> res = func(s,i + 1);
num = res.get("num");
i = res.get("i");
if(i != s.length() - 1){
continue;
}
}
switch(op){
case '+':
st.push(num);
break;
case '-':
st.push(-num);
break;
case '*':
int temp = st.pop();
st.push(temp * num);
break;
}
num = 0;
if(s.charAt(i) == ')'){
break;
}else{
op = s.charAt(i);
}
}
int sum = 0;
while(!st.isEmpty()){
sum += st.pop();
}
Map<String,Integer> temp = new HashMap<>();
temp.put("num",sum);
temp.put("i",i);
return temp;
}
}