博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Basic Calculator
阅读量:6669 次
发布时间:2019-06-25

本文共 2475 字,大约阅读时间需要 8 分钟。

该题的思路非常明白就是将中缀表达式转换为后缀表达式。然后通过后缀表达式来求值。

class Solution {public:    int calculate(string s) {                vector
postorder; stack
ccache; stack
icache; string tmp; int len = s.length(); if(s.length() < 1) return 0;//构造后缀表达式 for(int i = 0; i < len; ){ if(s[i] == ' '){ i++; continue; } if(s[i] == '+' || s[i] == '-' || s[i] == '(' || s[i] == ')'){ if(s[i] == '(' || ccache.empty()){ ccache.push(s[i]); i++; continue; } if(s[i] == ')'){ while(ccache.top() != '('){ tmp = ""; tmp += ccache.top(); postorder.push_back(tmp); ccache.pop(); } ccache.pop(); i++; continue; } if(s[i] == '+' || s[i] == '-'){ while(!ccache.empty() && ccache.top() != '(' ){ tmp = ""; tmp += ccache.top(); postorder.push_back(tmp); ccache.pop(); } ccache.push(s[i]); i++; continue; } }else{ int j = i; while(j < len && s[j] >= '0' && s[j] <= '9') j++; tmp = ""; tmp = s.substr(i, j - i); postorder.push_back(tmp); i = j; } }//将栈中剩余的元素所有加入到后缀表达式字串中 while(!ccache.empty()){ tmp = ""; tmp += ccache.top(); ccache.pop(); postorder.push_back(tmp); }
//通过后缀表达式求值        int fir, sec;        for(int i = 0; i < postorder.size(); i++){            if(postorder[i] == "+" || postorder[i] == "-"){                sec = icache.top();                icache.pop();                fir = icache.top();                icache.pop();                if(postorder[i] == "+")                    icache.push(fir + sec);                if(postorder[i] == "-")                    icache.push(fir - sec);            }else{                icache.push(atoi(postorder[i].c_str()));            }        }        return icache.top();    }}

转载地址:http://nylxo.baihongyu.com/

你可能感兴趣的文章
机房收费系统中的Grid++Report报表设计器的应用
查看>>
通过Wifi调试Android应用
查看>>
Leetcode: Construct Binary Tree from Inorder and Postorder Traversal
查看>>
ZeroMQ接口函数之 :zmq_getsockopt – 获取ZMQ socket的属性
查看>>
ThreadPoolExecutor使用介绍
查看>>
用C++/CLI搭建C++和C#之间的桥梁(四)—— 网络资源
查看>>
纳米技术的起源与发展
查看>>
launchpad, jira, github
查看>>
JavaWeb学习笔记——XML和SAX解析区别
查看>>
hdu1716排列2(stl:next_permutation+优先队列)
查看>>
Java 8 时间日期库的20个使用示例
查看>>
Android系统开发(4)——Autotools
查看>>
Nginx教程(一) Nginx入门教程
查看>>
【cocos2d-x 3.7 飞机大战】 决战南海I (十) 游戏主场景
查看>>
ORM进阶:Hibernate框架搭建及开发
查看>>
scala Wordcount
查看>>
单细胞文献分析 Quantitative single-cell rna-seq with unique molecular identifers
查看>>
面试2
查看>>
国庆第三天如何避免无聊
查看>>
Java多线程之细说线程池
查看>>