• LeetCode227:Basic Calculator II


    Implement a basic calculator to evaluate a simple expression string.

    The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero.

    You may assume that the given expression is always valid.

    Some examples:
    这里写图片描写叙述
    Note: Do not use the eval built-in library function.

    Credits:
    Special thanks to @ts for adding this problem and creating all test cases.

    和Basic Calculator比較相似。都是很巧妙的解法。

    runtime:24ms

    class Solution {
    public:
        int calculate(string s) {
        int len=s.size();
        if(s.empty())
            return 0;
        stack<int> st;
        int num = 0;
        char sign = '+';
        for(int i=0;i<len;i++){
            if(isdigit(s[i])){
                num = num*10+s[i]-'0';
            }
            if(!isdigit(s[i]) &&' '!=s[i] || i==len-1){
                if(sign=='-'){
                    st.push(-num);
                }
                if(sign=='+'){
                    st.push(num);
                }
                if(sign=='*'){
                    int tmp=st.top();
                    st.pop();
                    st.push(tmp*num);
                }
                if(sign=='/'){
                    int tmp=st.top();
                    st.pop();
                    st.push(tmp/num);
                }
                sign = s[i];
                num = 0;
            }
        }
    
        int re = 0;
        while(!st.empty()){
            re += st.top();
            st.pop();
        }
        return re;
    
        }
    };
  • 相关阅读:
    iOS开发之--打印一堆奇怪东西的解决方案
    iOS开发之--从URL加载图片
    iOS开发之--搭建本地的SVN服务器
    HTML5
    swift
    swift
    HTML 换行
    HTML 注释
    HTML 水平线
    /etc/rc.d/rc.local
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5314037.html
Copyright © 2020-2023  润新知