zoukankan      html  css  js  c++  java
  • 227. 基本计算器 II

    题目:给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。

    示例 1:

    输入:s = "3+2*2"
    输出:7
    示例 2:

    输入:s = " 3/2 "
    输出:1
    示例 3:

    输入:s = " 3+5 / 2 "
    输出:5

    class Solution {
    public:
        int calculate(string s) {
            vector<int> stk;
            char preSign = '+';
            int num = 0;
            int n = s.length();
            for (int i = 0; i < n; ++i) {
                if (isdigit(s[i])) {
                    num = num * 10 + int(s[i] - '0');
                }
                if (!isdigit(s[i]) && s[i] != ' ' || i == n - 1) {
                    switch (preSign) {
                        case '+':
                            stk.push_back(num);
                            break;
                        case '-':
                            stk.push_back(-num);
                            break;
                        case '*':
                            stk.back() *= num;
                            break;
                        default:
                            stk.back() /= num;
                    }
                    preSign = s[i];
                    num = 0;
                }
            }
            return accumulate(stk.begin(), stk.end(), 0);
        }
    };

    拓展:accumulate使用方法   #include<numeric>

    accumulate()可以用 + 运算符求出元素序列的和。前两个参数是定义序列的输入迭代器,第三个参数是和的初值;第三个参数的类型决定了返回值的类型。但是对于自定义数据类型,我们就需要自己动手写一个回调函数来实现自定义数据的处理,然后让它作为accumulate()的第四个参数!

     

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/basic-calculator-ii

  • 相关阅读:
    贴一段微博上的小知识
    关于编译Qt以及驱动的一点总结吧
    一些服务器客户端的c例子
    android中DatePicker和TimePicker的使用
    Python标准库string模块《未完待续》
    Qt: SQL Programming
    和一个坑爹的项目组的经历
    linux一些杂项整理
    Qt中的QTableWidget
    Linux c学习进程基础学习
  • 原文地址:https://www.cnblogs.com/USTC-ZCC/p/14517133.html
Copyright © 2011-2022 走看看