题目

image.png

思路

  • 乘除先运算、减法就将数变为负数,最后所有数相加

    代码

    1. class Solution {
    2. public int calculate(String s) {
    3. char[] chars = s.toCharArray();
    4. int len = chars.length;
    5. Stack<Integer> nums = new Stack<>();
    6. char sign = '+';
    7. int num = 0;
    8. for (int i = 0; i < len; i++) {
    9. if (chars[i] >= '0') {
    10. num = num * 10 + (chars[i] - '0');
    11. }
    12. if (chars[i] < '0' && chars[i] != ' ' || i == len - 1) {
    13. if (sign == '+') {
    14. nums.push(num);
    15. } else if (sign == '-') {
    16. nums.push(-num);
    17. } else if (sign == '*' || sign == '/'){
    18. int m = sign == '*' ? nums.pop() * num : nums.pop() / num;
    19. nums.push(m);
    20. }
    21. sign = chars[i];
    22. num = 0;
    23. }
    24. }
    25. int res = 0;
    26. while (nums.size() != 0) {
    27. res += nums.pop();
    28. }
    29. return res;
    30. }
    31. }
    基本计数器II