网站seo技术,wordpress editor ios,个人主页网页设计,个人网站备案描述解题思路#xff1a; 根据题意#xff0c;字符串中包含的运算符只有和- 使用辅助栈的方法来解决该问题 定义结果集res和符号位sign(用于判断对下一数的加减操作),接着对字符串进行遍历。 如果当前字符为数字字符#xff0c;判断当前字符的下一个字符是否也是数字字符#x… 解题思路 根据题意字符串中包含的运算符只有和- 使用辅助栈的方法来解决该问题 定义结果集res和符号位sign(用于判断对下一数的加减操作),接着对字符串进行遍历。 如果当前字符为数字字符判断当前字符的下一个字符是否也是数字字符如果下一个字符也是数字字符需要将其和之后的数字字符都转换为int类型再进行合并直至下一个字符不为数字字符为止。 如果当前字符为运算符则更新符号位sign(加操作sign1,减操作sign-1) 如果当前字符为左括号则将当前结果集推入栈中并重置当前结果集为0将当前符号位推入栈中并重置当前符号位。这样做的目的是将(xxx)中的式子当成一个整体来计算。 如果当前字符为右括号则将当前结果集与取出的第一个栈顶元素(符号位)相乘再与存入的结果集相加。 代码实现: public int calculate(String s) {StackInteger stacknew Stack();int res0;//结果int sign1;//符号位1代表正-1代表为负int ns.length();for(int i0;in;i){char c s.charAt(i);if(Character.isDigit(c)){int curc-0;while (i 1 n Character.isDigit(s.charAt(i 1))) {// i向后移动直到遇到非数字i;// i每次向后移动一位当前值就要乘10cur cur * 10 s.charAt(i) - 0;}resressign*cur;}//更新符号位else if(c){sign1;}else if(c-){sign-1;}//括号的情况else if(c(){stack.push(res);res0;stack.push(sign);sign1;}else if(c)){resres*stack.pop()stack.pop();}}return res;}