leetcode Basic Calculator

来源:互联网 发布:轰炸手机号码软件 编辑:程序博客网 时间:2024/06/07 09:29

Implement a basic calculator to evaluate a simple expression string.

The expression string may contain open ( and closing parentheses ), the plus + or minus sign -non-negative integers and empty spaces .

You may assume that the given expression is always valid.

Some examples:

"1 + 1" = 2" 2-1 + 2 " = 3"(1+(4+5+2)-3)+(6+8)" = 23

Note: Do not use the eval built-in library function.

遇到"(",将当前的结果和符号存入栈中,遇到")",将当前结果乘以以前符号再加上以前结果,得到当前结果

class Solution {public:    int calculate(string s) {        stack<int>  sta;        int i = 0;        int f = 1;        int ans = 0;         for(i = 0;i<s.length();i++)         {             if(s[i]>='0' && s[i]<='9')             {                 int temp = s[i]-'0';                 i++;                 while(s[i]>='0' && s[i] <='9')                 {                     temp = temp*10 + s[i]-'0' ;                     i++;                 }                 i--;                 ans = ans + temp*f;             }             else if(s[i] =='-' )               f = -1;            else if(s[i] == '+')               f = 1;             else if(s[i] == '(')             {                sta.push(ans);                sta.push(f);                ans = 0;                f = 1;             }             else if(s[i] == ')')               {                   ans = ans * sta.top();                   sta.pop();                   ans = ans + sta.top();                   sta.pop();               }         }        return ans;    }};


0 0